/**
 * Copyright (c) 2020-present, Wuba, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: prediction.proto

package com.bj58.ailab.dlpredictonline.grpc.pytorch;

/**
 * @author 58
 */
public final class PredictionProtos {
    private PredictionProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }

    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
        registerAllExtensions(
            (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface SeldonMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.SeldonMessage)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        boolean hasStatus();
        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        Status getStatus();
        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        StatusOrBuilder getStatusOrBuilder();

        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        boolean hasMeta();
        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        Meta getMeta();
        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        MetaOrBuilder getMetaOrBuilder();

        /**
         * <code>optional .seldon.protos.DefaultData data = 3;</code>
         */
        DefaultData getData();
        /**
         * <code>optional .seldon.protos.DefaultData data = 3;</code>
         */
        DefaultDataOrBuilder getDataOrBuilder();

        /**
         * <code>optional bytes binData = 4;</code>
         */
        com.google.protobuf.ByteString getBinData();

        /**
         * <code>optional string strData = 5;</code>
         */
        String getStrData();
        /**
         * <code>optional string strData = 5;</code>
         */
        com.google.protobuf.ByteString
        getStrDataBytes();

        /**
         * <code>optional .google.protobuf.Value jsonData = 6;</code>
         */
        com.google.protobuf.Value getJsonData();
        /**
         * <code>optional .google.protobuf.Value jsonData = 6;</code>
         */
        com.google.protobuf.ValueOrBuilder getJsonDataOrBuilder();

        public SeldonMessage.DataOneofCase getDataOneofCase();
    }
    /**
     * Protobuf type {@code seldon.protos.SeldonMessage}
     */
    public  static final class SeldonMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.SeldonMessage)
        SeldonMessageOrBuilder {
        // Use SeldonMessage.newBuilder() to construct.
        private SeldonMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private SeldonMessage() {
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private SeldonMessage(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            Status.Builder subBuilder = null;
                            if (status_ != null) {
                                subBuilder = status_.toBuilder();
                            }
                            status_ = input.readMessage(Status.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(status_);
                                status_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 18: {
                            Meta.Builder subBuilder = null;
                            if (meta_ != null) {
                                subBuilder = meta_.toBuilder();
                            }
                            meta_ = input.readMessage(Meta.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(meta_);
                                meta_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 26: {
                            DefaultData.Builder subBuilder = null;
                            if (dataOneofCase_ == 3) {
                                subBuilder = ((DefaultData) dataOneof_).toBuilder();
                            }
                            dataOneof_ =
                                input.readMessage(DefaultData.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom((DefaultData) dataOneof_);
                                dataOneof_ = subBuilder.buildPartial();
                            }
                            dataOneofCase_ = 3;
                            break;
                        }
                        case 34: {
                            dataOneofCase_ = 4;
                            dataOneof_ = input.readBytes();
                            break;
                        }
                        case 42: {
                            String s = input.readStringRequireUtf8();
                            dataOneofCase_ = 5;
                            dataOneof_ = s;
                            break;
                        }
                        case 50: {
                            com.google.protobuf.Value.Builder subBuilder = null;
                            if (dataOneofCase_ == 6) {
                                subBuilder = ((com.google.protobuf.Value) dataOneof_).toBuilder();
                            }
                            dataOneof_ =
                                input.readMessage(com.google.protobuf.Value.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom((com.google.protobuf.Value) dataOneof_);
                                dataOneof_ = subBuilder.buildPartial();
                            }
                            dataOneofCase_ = 6;
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_SeldonMessage_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_SeldonMessage_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    SeldonMessage.class, Builder.class);
        }

        private int dataOneofCase_ = 0;
        private Object dataOneof_;
        public enum DataOneofCase
            implements com.google.protobuf.Internal.EnumLite {
            DATA(3),
            BINDATA(4),
            STRDATA(5),
            JSONDATA(6),
            DATAONEOF_NOT_SET(0);
            private final int value;
            private DataOneofCase(int value) {
                this.value = value;
            }
            /**
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @Deprecated
            public static DataOneofCase valueOf(int value) {
                return forNumber(value);
            }

            public static DataOneofCase forNumber(int value) {
                switch (value) {
                    case 3: return DATA;
                    case 4: return BINDATA;
                    case 5: return STRDATA;
                    case 6: return JSONDATA;
                    case 0: return DATAONEOF_NOT_SET;
                    default: return null;
                }
            }
            @Override
            public int getNumber() {
                return this.value;
            }
        };

        @Override
        public DataOneofCase
        getDataOneofCase() {
            return DataOneofCase.forNumber(
                dataOneofCase_);
        }

        public static final int STATUS_FIELD_NUMBER = 1;
        private Status status_;
        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        @Override
        public boolean hasStatus() {
            return status_ != null;
        }
        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        @Override
        public Status getStatus() {
            return status_ == null ? Status.getDefaultInstance() : status_;
        }
        /**
         * <code>optional .seldon.protos.Status status = 1;</code>
         */
        @Override
        public StatusOrBuilder getStatusOrBuilder() {
            return getStatus();
        }

        public static final int META_FIELD_NUMBER = 2;
        private Meta meta_;
        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        @Override
        public boolean hasMeta() {
            return meta_ != null;
        }
        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        @Override
        public Meta getMeta() {
            return meta_ == null ? Meta.getDefaultInstance() : meta_;
        }
        /**
         * <code>optional .seldon.protos.Meta meta = 2;</code>
         */
        @Override
        public MetaOrBuilder getMetaOrBuilder() {
            return getMeta();
        }

        public static final int DATA_FIELD_NUMBER = 3;
        /**
         * <code>optional .seldon.protos.DefaultData data = 3;</code>
         */
        @Override
        public DefaultData getData() {
            if (dataOneofCase_ == 3) {
                return (DefaultData) dataOneof_;
            }
            return DefaultData.getDefaultInstance();
        }
        /**
         * <code>optional .seldon.protos.DefaultData data = 3;</code>
         */
        @Override
        public DefaultDataOrBuilder getDataOrBuilder() {
            if (dataOneofCase_ == 3) {
                return (DefaultData) dataOneof_;
            }
            return DefaultData.getDefaultInstance();
        }

        public static final int BINDATA_FIELD_NUMBER = 4;
        /**
         * <code>optional bytes binData = 4;</code>
         */
        @Override
        public com.google.protobuf.ByteString getBinData() {
            if (dataOneofCase_ == 4) {
                return (com.google.protobuf.ByteString) dataOneof_;
            }
            return com.google.protobuf.ByteString.EMPTY;
        }

        public static final int STRDATA_FIELD_NUMBER = 5;
        /**
         * <code>optional string strData = 5;</code>
         */
        @Override
        public String getStrData() {
            Object ref = "";
            if (dataOneofCase_ == 5) {
                ref = dataOneof_;
            }
            if (ref instanceof String) {
                return (String) ref;
            } else {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                String s = bs.toStringUtf8();
                if (dataOneofCase_ == 5) {
                    dataOneof_ = s;
                }
                return s;
            }
        }
        /**
         * <code>optional string strData = 5;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getStrDataBytes() {
            Object ref = "";
            if (dataOneofCase_ == 5) {
                ref = dataOneof_;
            }
            if (ref instanceof String) {
                com.google.protobuf.ByteString b =
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (String) ref);
                if (dataOneofCase_ == 5) {
                    dataOneof_ = b;
                }
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int JSONDATA_FIELD_NUMBER = 6;
        /**
         * <code>optional .google.protobuf.Value jsonData = 6;</code>
         */
        @Override
        public com.google.protobuf.Value getJsonData() {
            if (dataOneofCase_ == 6) {
                return (com.google.protobuf.Value) dataOneof_;
            }
            return com.google.protobuf.Value.getDefaultInstance();
        }
        /**
         * <code>optional .google.protobuf.Value jsonData = 6;</code>
         */
        @Override
        public com.google.protobuf.ValueOrBuilder getJsonDataOrBuilder() {
            if (dataOneofCase_ == 6) {
                return (com.google.protobuf.Value) dataOneof_;
            }
            return com.google.protobuf.Value.getDefaultInstance();
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (status_ != null) {
                output.writeMessage(1, getStatus());
            }
            if (meta_ != null) {
                output.writeMessage(2, getMeta());
            }
            if (dataOneofCase_ == 3) {
                output.writeMessage(3, (DefaultData) dataOneof_);
            }
            if (dataOneofCase_ == 4) {
                output.writeBytes(
                    4, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) dataOneof_));
            }
            if (dataOneofCase_ == 5) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, dataOneof_);
            }
            if (dataOneofCase_ == 6) {
                output.writeMessage(6, (com.google.protobuf.Value) dataOneof_);
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (status_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(1, getStatus());
            }
            if (meta_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(2, getMeta());
            }
            if (dataOneofCase_ == 3) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(3, (DefaultData) dataOneof_);
            }
            if (dataOneofCase_ == 4) {
                size += com.google.protobuf.CodedOutputStream
                    .computeBytesSize(
                        4, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) dataOneof_));
            }
            if (dataOneofCase_ == 5) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, dataOneof_);
            }
            if (dataOneofCase_ == 6) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(6, (com.google.protobuf.Value) dataOneof_);
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof SeldonMessage)) {
                return super.equals(obj);
            }
            SeldonMessage other = (SeldonMessage) obj;

            boolean result = true;
            result = result && (hasStatus() == other.hasStatus());
            if (hasStatus()) {
                result = result && getStatus()
                    .equals(other.getStatus());
            }
            result = result && (hasMeta() == other.hasMeta());
            if (hasMeta()) {
                result = result && getMeta()
                    .equals(other.getMeta());
            }
            result = result && getDataOneofCase().equals(
                other.getDataOneofCase());
            if (!result) {
                return false;
            }
            switch (dataOneofCase_) {
                case 3:
                    result = result && getData()
                        .equals(other.getData());
                    break;
                case 4:
                    result = result && getBinData()
                        .equals(other.getBinData());
                    break;
                case 5:
                    result = result && getStrData()
                        .equals(other.getStrData());
                    break;
                case 6:
                    result = result && getJsonData()
                        .equals(other.getJsonData());
                    break;
                case 0:
                default:
            }
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (hasStatus()) {
                hash = (37 * hash) + STATUS_FIELD_NUMBER;
                hash = (53 * hash) + getStatus().hashCode();
            }
            if (hasMeta()) {
                hash = (37 * hash) + META_FIELD_NUMBER;
                hash = (53 * hash) + getMeta().hashCode();
            }
            switch (dataOneofCase_) {
                case 3:
                    hash = (37 * hash) + DATA_FIELD_NUMBER;
                    hash = (53 * hash) + getData().hashCode();
                    break;
                case 4:
                    hash = (37 * hash) + BINDATA_FIELD_NUMBER;
                    hash = (53 * hash) + getBinData().hashCode();
                    break;
                case 5:
                    hash = (37 * hash) + STRDATA_FIELD_NUMBER;
                    hash = (53 * hash) + getStrData().hashCode();
                    break;
                case 6:
                    hash = (37 * hash) + JSONDATA_FIELD_NUMBER;
                    hash = (53 * hash) + getJsonData().hashCode();
                    break;
                case 0:
                default:
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static SeldonMessage parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static SeldonMessage parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static SeldonMessage parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static SeldonMessage parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static SeldonMessage parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static SeldonMessage parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static SeldonMessage parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static SeldonMessage parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static SeldonMessage parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static SeldonMessage parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(SeldonMessage prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.SeldonMessage}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.SeldonMessage)
            SeldonMessageOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessage_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessage_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        SeldonMessage.class, Builder.class);
            }

            // Construct using PredictionProtos.SeldonMessage.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                if (statusBuilder_ == null) {
                    status_ = null;
                } else {
                    status_ = null;
                    statusBuilder_ = null;
                }
                if (metaBuilder_ == null) {
                    meta_ = null;
                } else {
                    meta_ = null;
                    metaBuilder_ = null;
                }
                dataOneofCase_ = 0;
                dataOneof_ = null;
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessage_descriptor;
            }

            @Override
            public SeldonMessage getDefaultInstanceForType() {
                return SeldonMessage.getDefaultInstance();
            }

            @Override
            public SeldonMessage build() {
                SeldonMessage result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public SeldonMessage buildPartial() {
                SeldonMessage result = new SeldonMessage(this);
                if (statusBuilder_ == null) {
                    result.status_ = status_;
                } else {
                    result.status_ = statusBuilder_.build();
                }
                if (metaBuilder_ == null) {
                    result.meta_ = meta_;
                } else {
                    result.meta_ = metaBuilder_.build();
                }
                if (dataOneofCase_ == 3) {
                    if (dataBuilder_ == null) {
                        result.dataOneof_ = dataOneof_;
                    } else {
                        result.dataOneof_ = dataBuilder_.build();
                    }
                }
                if (dataOneofCase_ == 4) {
                    result.dataOneof_ = dataOneof_;
                }
                if (dataOneofCase_ == 5) {
                    result.dataOneof_ = dataOneof_;
                }
                if (dataOneofCase_ == 6) {
                    if (jsonDataBuilder_ == null) {
                        result.dataOneof_ = dataOneof_;
                    } else {
                        result.dataOneof_ = jsonDataBuilder_.build();
                    }
                }
                result.dataOneofCase_ = dataOneofCase_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof SeldonMessage) {
                    return mergeFrom((SeldonMessage)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(SeldonMessage other) {
                if (other == SeldonMessage.getDefaultInstance()) {
                    return this;
                }
                if (other.hasStatus()) {
                    mergeStatus(other.getStatus());
                }
                if (other.hasMeta()) {
                    mergeMeta(other.getMeta());
                }
                switch (other.getDataOneofCase()) {
                    case DATA: {
                        mergeData(other.getData());
                        break;
                    }
                    case BINDATA: {
                        setBinData(other.getBinData());
                        break;
                    }
                    case STRDATA: {
                        dataOneofCase_ = 5;
                        dataOneof_ = other.dataOneof_;
                        onChanged();
                        break;
                    }
                    case JSONDATA: {
                        mergeJsonData(other.getJsonData());
                        break;
                    }
                    case DATAONEOF_NOT_SET: {
                        break;
                    }
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                SeldonMessage parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (SeldonMessage) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int dataOneofCase_ = 0;
            private Object dataOneof_;
            @Override
            public DataOneofCase
            getDataOneofCase() {
                return DataOneofCase.forNumber(
                    dataOneofCase_);
            }

            public Builder clearDataOneof() {
                dataOneofCase_ = 0;
                dataOneof_ = null;
                onChanged();
                return this;
            }


            private Status status_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                Status, Status.Builder, StatusOrBuilder> statusBuilder_;
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            @Override
            public boolean hasStatus() {
                return statusBuilder_ != null || status_ != null;
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            @Override
            public Status getStatus() {
                if (statusBuilder_ == null) {
                    return status_ == null ? Status.getDefaultInstance() : status_;
                } else {
                    return statusBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            public Builder setStatus(Status value) {
                if (statusBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    status_ = value;
                    onChanged();
                } else {
                    statusBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            public Builder setStatus(
                Status.Builder builderForValue) {
                if (statusBuilder_ == null) {
                    status_ = builderForValue.build();
                    onChanged();
                } else {
                    statusBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            public Builder mergeStatus(Status value) {
                if (statusBuilder_ == null) {
                    if (status_ != null) {
                        status_ =
                            Status.newBuilder(status_).mergeFrom(value).buildPartial();
                    } else {
                        status_ = value;
                    }
                    onChanged();
                } else {
                    statusBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            public Builder clearStatus() {
                if (statusBuilder_ == null) {
                    status_ = null;
                    onChanged();
                } else {
                    status_ = null;
                    statusBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            public Status.Builder getStatusBuilder() {

                onChanged();
                return getStatusFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            @Override
            public StatusOrBuilder getStatusOrBuilder() {
                if (statusBuilder_ != null) {
                    return statusBuilder_.getMessageOrBuilder();
                } else {
                    return status_ == null ?
                        Status.getDefaultInstance() : status_;
                }
            }
            /**
             * <code>optional .seldon.protos.Status status = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                Status, Status.Builder, StatusOrBuilder>
            getStatusFieldBuilder() {
                if (statusBuilder_ == null) {
                    statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        Status, Status.Builder, StatusOrBuilder>(
                        getStatus(),
                        getParentForChildren(),
                        isClean());
                    status_ = null;
                }
                return statusBuilder_;
            }

            private Meta meta_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                Meta, Meta.Builder, MetaOrBuilder> metaBuilder_;
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            @Override
            public boolean hasMeta() {
                return metaBuilder_ != null || meta_ != null;
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            @Override
            public Meta getMeta() {
                if (metaBuilder_ == null) {
                    return meta_ == null ? Meta.getDefaultInstance() : meta_;
                } else {
                    return metaBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            public Builder setMeta(Meta value) {
                if (metaBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    meta_ = value;
                    onChanged();
                } else {
                    metaBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            public Builder setMeta(
                Meta.Builder builderForValue) {
                if (metaBuilder_ == null) {
                    meta_ = builderForValue.build();
                    onChanged();
                } else {
                    metaBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            public Builder mergeMeta(Meta value) {
                if (metaBuilder_ == null) {
                    if (meta_ != null) {
                        meta_ =
                            Meta.newBuilder(meta_).mergeFrom(value).buildPartial();
                    } else {
                        meta_ = value;
                    }
                    onChanged();
                } else {
                    metaBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            public Builder clearMeta() {
                if (metaBuilder_ == null) {
                    meta_ = null;
                    onChanged();
                } else {
                    meta_ = null;
                    metaBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            public Meta.Builder getMetaBuilder() {

                onChanged();
                return getMetaFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            @Override
            public MetaOrBuilder getMetaOrBuilder() {
                if (metaBuilder_ != null) {
                    return metaBuilder_.getMessageOrBuilder();
                } else {
                    return meta_ == null ?
                        Meta.getDefaultInstance() : meta_;
                }
            }
            /**
             * <code>optional .seldon.protos.Meta meta = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                Meta, Meta.Builder, MetaOrBuilder>
            getMetaFieldBuilder() {
                if (metaBuilder_ == null) {
                    metaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        Meta, Meta.Builder, MetaOrBuilder>(
                        getMeta(),
                        getParentForChildren(),
                        isClean());
                    meta_ = null;
                }
                return metaBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<
                DefaultData, DefaultData.Builder, DefaultDataOrBuilder> dataBuilder_;
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            @Override
            public DefaultData getData() {
                if (dataBuilder_ == null) {
                    if (dataOneofCase_ == 3) {
                        return (DefaultData) dataOneof_;
                    }
                    return DefaultData.getDefaultInstance();
                } else {
                    if (dataOneofCase_ == 3) {
                        return dataBuilder_.getMessage();
                    }
                    return DefaultData.getDefaultInstance();
                }
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            public Builder setData(DefaultData value) {
                if (dataBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dataOneof_ = value;
                    onChanged();
                } else {
                    dataBuilder_.setMessage(value);
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            public Builder setData(
                DefaultData.Builder builderForValue) {
                if (dataBuilder_ == null) {
                    dataOneof_ = builderForValue.build();
                    onChanged();
                } else {
                    dataBuilder_.setMessage(builderForValue.build());
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            public Builder mergeData(DefaultData value) {
                if (dataBuilder_ == null) {
                    if (dataOneofCase_ == 3 &&
                        dataOneof_ != DefaultData.getDefaultInstance()) {
                        dataOneof_ = DefaultData.newBuilder((DefaultData) dataOneof_)
                            .mergeFrom(value).buildPartial();
                    } else {
                        dataOneof_ = value;
                    }
                    onChanged();
                } else {
                    if (dataOneofCase_ == 3) {
                        dataBuilder_.mergeFrom(value);
                    }
                    dataBuilder_.setMessage(value);
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            public Builder clearData() {
                if (dataBuilder_ == null) {
                    if (dataOneofCase_ == 3) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                        onChanged();
                    }
                } else {
                    if (dataOneofCase_ == 3) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                    }
                    dataBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            public DefaultData.Builder getDataBuilder() {
                return getDataFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            @Override
            public DefaultDataOrBuilder getDataOrBuilder() {
                if ((dataOneofCase_ == 3) && (dataBuilder_ != null)) {
                    return dataBuilder_.getMessageOrBuilder();
                } else {
                    if (dataOneofCase_ == 3) {
                        return (DefaultData) dataOneof_;
                    }
                    return DefaultData.getDefaultInstance();
                }
            }
            /**
             * <code>optional .seldon.protos.DefaultData data = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                DefaultData, DefaultData.Builder, DefaultDataOrBuilder>
            getDataFieldBuilder() {
                if (dataBuilder_ == null) {
                    if (!(dataOneofCase_ == 3)) {
                        dataOneof_ = DefaultData.getDefaultInstance();
                    }
                    dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        DefaultData, DefaultData.Builder, DefaultDataOrBuilder>(
                        (DefaultData) dataOneof_,
                        getParentForChildren(),
                        isClean());
                    dataOneof_ = null;
                }
                dataOneofCase_ = 3;
                onChanged();;
                return dataBuilder_;
            }

            /**
             * <code>optional bytes binData = 4;</code>
             */
            @Override
            public com.google.protobuf.ByteString getBinData() {
                if (dataOneofCase_ == 4) {
                    return (com.google.protobuf.ByteString) dataOneof_;
                }
                return com.google.protobuf.ByteString.EMPTY;
            }
            /**
             * <code>optional bytes binData = 4;</code>
             */
            public Builder setBinData(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dataOneofCase_ = 4;
                dataOneof_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional bytes binData = 4;</code>
             */
            public Builder clearBinData() {
                if (dataOneofCase_ == 4) {
                    dataOneofCase_ = 0;
                    dataOneof_ = null;
                    onChanged();
                }
                return this;
            }

            /**
             * <code>optional string strData = 5;</code>
             */
            @Override
            public String getStrData() {
                Object ref = "";
                if (dataOneofCase_ == 5) {
                    ref = dataOneof_;
                }
                if (!(ref instanceof String)) {
                    com.google.protobuf.ByteString bs =
                        (com.google.protobuf.ByteString) ref;
                    String s = bs.toStringUtf8();
                    if (dataOneofCase_ == 5) {
                        dataOneof_ = s;
                    }
                    return s;
                } else {
                    return (String) ref;
                }
            }
            /**
             * <code>optional string strData = 5;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getStrDataBytes() {
                Object ref = "";
                if (dataOneofCase_ == 5) {
                    ref = dataOneof_;
                }
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                            (String) ref);
                    if (dataOneofCase_ == 5) {
                        dataOneof_ = b;
                    }
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>optional string strData = 5;</code>
             */
            public Builder setStrData(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dataOneofCase_ = 5;
                dataOneof_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional string strData = 5;</code>
             */
            public Builder clearStrData() {
                if (dataOneofCase_ == 5) {
                    dataOneofCase_ = 0;
                    dataOneof_ = null;
                    onChanged();
                }
                return this;
            }
            /**
             * <code>optional string strData = 5;</code>
             */
            public Builder setStrDataBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                dataOneofCase_ = 5;
                dataOneof_ = value;
                onChanged();
                return this;
            }

            private com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder> jsonDataBuilder_;
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            @Override
            public com.google.protobuf.Value getJsonData() {
                if (jsonDataBuilder_ == null) {
                    if (dataOneofCase_ == 6) {
                        return (com.google.protobuf.Value) dataOneof_;
                    }
                    return com.google.protobuf.Value.getDefaultInstance();
                } else {
                    if (dataOneofCase_ == 6) {
                        return jsonDataBuilder_.getMessage();
                    }
                    return com.google.protobuf.Value.getDefaultInstance();
                }
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            public Builder setJsonData(com.google.protobuf.Value value) {
                if (jsonDataBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dataOneof_ = value;
                    onChanged();
                } else {
                    jsonDataBuilder_.setMessage(value);
                }
                dataOneofCase_ = 6;
                return this;
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            public Builder setJsonData(
                com.google.protobuf.Value.Builder builderForValue) {
                if (jsonDataBuilder_ == null) {
                    dataOneof_ = builderForValue.build();
                    onChanged();
                } else {
                    jsonDataBuilder_.setMessage(builderForValue.build());
                }
                dataOneofCase_ = 6;
                return this;
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            public Builder mergeJsonData(com.google.protobuf.Value value) {
                if (jsonDataBuilder_ == null) {
                    if (dataOneofCase_ == 6 &&
                        dataOneof_ != com.google.protobuf.Value.getDefaultInstance()) {
                        dataOneof_ = com.google.protobuf.Value.newBuilder((com.google.protobuf.Value) dataOneof_)
                            .mergeFrom(value).buildPartial();
                    } else {
                        dataOneof_ = value;
                    }
                    onChanged();
                } else {
                    if (dataOneofCase_ == 6) {
                        jsonDataBuilder_.mergeFrom(value);
                    }
                    jsonDataBuilder_.setMessage(value);
                }
                dataOneofCase_ = 6;
                return this;
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            public Builder clearJsonData() {
                if (jsonDataBuilder_ == null) {
                    if (dataOneofCase_ == 6) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                        onChanged();
                    }
                } else {
                    if (dataOneofCase_ == 6) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                    }
                    jsonDataBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            public com.google.protobuf.Value.Builder getJsonDataBuilder() {
                return getJsonDataFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            @Override
            public com.google.protobuf.ValueOrBuilder getJsonDataOrBuilder() {
                if ((dataOneofCase_ == 6) && (jsonDataBuilder_ != null)) {
                    return jsonDataBuilder_.getMessageOrBuilder();
                } else {
                    if (dataOneofCase_ == 6) {
                        return (com.google.protobuf.Value) dataOneof_;
                    }
                    return com.google.protobuf.Value.getDefaultInstance();
                }
            }
            /**
             * <code>optional .google.protobuf.Value jsonData = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder>
            getJsonDataFieldBuilder() {
                if (jsonDataBuilder_ == null) {
                    if (!(dataOneofCase_ == 6)) {
                        dataOneof_ = com.google.protobuf.Value.getDefaultInstance();
                    }
                    jsonDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        com.google.protobuf.Value, com.google.protobuf.Value.Builder, com.google.protobuf.ValueOrBuilder>(
                        (com.google.protobuf.Value) dataOneof_,
                        getParentForChildren(),
                        isClean());
                    dataOneof_ = null;
                }
                dataOneofCase_ = 6;
                onChanged();;
                return jsonDataBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.SeldonMessage)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.SeldonMessage)
        private static final SeldonMessage DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new SeldonMessage();
        }

        public static SeldonMessage getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SeldonMessage>
            PARSER = new com.google.protobuf.AbstractParser<SeldonMessage>() {
            @Override
            public SeldonMessage parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new SeldonMessage(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<SeldonMessage> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<SeldonMessage> getParserForType() {
            return PARSER;
        }

        @Override
        public SeldonMessage getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface DefaultDataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.DefaultData)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated string names = 1;</code>
         */
        java.util.List<String>
        getNamesList();
        /**
         * <code>repeated string names = 1;</code>
         */
        int getNamesCount();
        /**
         * <code>repeated string names = 1;</code>
         */
        String getNames(int index);
        /**
         * <code>repeated string names = 1;</code>
         */
        com.google.protobuf.ByteString
        getNamesBytes(int index);

        /**
         * <code>optional .seldon.protos.Tensor tensor = 2;</code>
         */
        Tensor getTensor();
        /**
         * <code>optional .seldon.protos.Tensor tensor = 2;</code>
         */
        TensorOrBuilder getTensorOrBuilder();

        /**
         * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
         */
        com.google.protobuf.ListValue getNdarray();
        /**
         * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
         */
        com.google.protobuf.ListValueOrBuilder getNdarrayOrBuilder();

        /**
         * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
         */
        org.tensorflow.framework.TensorProto getTftensor();
        /**
         * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
         */
        org.tensorflow.framework.TensorProtoOrBuilder getTftensorOrBuilder();

        public DefaultData.DataOneofCase getDataOneofCase();
    }
    /**
     * Protobuf type {@code seldon.protos.DefaultData}
     */
    public  static final class DefaultData extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.DefaultData)
        DefaultDataOrBuilder {
        // Use DefaultData.newBuilder() to construct.
        private DefaultData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private DefaultData() {
            names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private DefaultData(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            String s = input.readStringRequireUtf8();
                            if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                                names_ = new com.google.protobuf.LazyStringArrayList();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            names_.add(s);
                            break;
                        }
                        case 18: {
                            Tensor.Builder subBuilder = null;
                            if (dataOneofCase_ == 2) {
                                subBuilder = ((Tensor) dataOneof_).toBuilder();
                            }
                            dataOneof_ =
                                input.readMessage(Tensor.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom((Tensor) dataOneof_);
                                dataOneof_ = subBuilder.buildPartial();
                            }
                            dataOneofCase_ = 2;
                            break;
                        }
                        case 26: {
                            com.google.protobuf.ListValue.Builder subBuilder = null;
                            if (dataOneofCase_ == 3) {
                                subBuilder = ((com.google.protobuf.ListValue) dataOneof_).toBuilder();
                            }
                            dataOneof_ =
                                input.readMessage(com.google.protobuf.ListValue.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom((com.google.protobuf.ListValue) dataOneof_);
                                dataOneof_ = subBuilder.buildPartial();
                            }
                            dataOneofCase_ = 3;
                            break;
                        }
                        case 34: {
                            org.tensorflow.framework.TensorProto.Builder subBuilder = null;
                            if (dataOneofCase_ == 4) {
                                subBuilder = ((org.tensorflow.framework.TensorProto) dataOneof_).toBuilder();
                            }
                            dataOneof_ =
                                input.readMessage(org.tensorflow.framework.TensorProto.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom((org.tensorflow.framework.TensorProto) dataOneof_);
                                dataOneof_ = subBuilder.buildPartial();
                            }
                            dataOneofCase_ = 4;
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    names_ = names_.getUnmodifiableView();
                }
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_DefaultData_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_DefaultData_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    DefaultData.class, Builder.class);
        }

        private int bitField0_;
        private int dataOneofCase_ = 0;
        private Object dataOneof_;
        public enum DataOneofCase
            implements com.google.protobuf.Internal.EnumLite {
            TENSOR(2),
            NDARRAY(3),
            TFTENSOR(4),
            DATAONEOF_NOT_SET(0);
            private final int value;
            private DataOneofCase(int value) {
                this.value = value;
            }
            /**
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @Deprecated
            public static DataOneofCase valueOf(int value) {
                return forNumber(value);
            }

            public static DataOneofCase forNumber(int value) {
                switch (value) {
                    case 2: return TENSOR;
                    case 3: return NDARRAY;
                    case 4: return TFTENSOR;
                    case 0: return DATAONEOF_NOT_SET;
                    default: return null;
                }
            }
            @Override
            public int getNumber() {
                return this.value;
            }
        };

        @Override
        public DataOneofCase
        getDataOneofCase() {
            return DataOneofCase.forNumber(
                dataOneofCase_);
        }

        public static final int NAMES_FIELD_NUMBER = 1;
        private com.google.protobuf.LazyStringList names_;
        /**
         * <code>repeated string names = 1;</code>
         */
        @Override
        public com.google.protobuf.ProtocolStringList
        getNamesList() {
            return names_;
        }
        /**
         * <code>repeated string names = 1;</code>
         */
        @Override
        public int getNamesCount() {
            return names_.size();
        }
        /**
         * <code>repeated string names = 1;</code>
         */
        @Override
        public String getNames(int index) {
            return names_.get(index);
        }
        /**
         * <code>repeated string names = 1;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getNamesBytes(int index) {
            return names_.getByteString(index);
        }

        public static final int TENSOR_FIELD_NUMBER = 2;
        /**
         * <code>optional .seldon.protos.Tensor tensor = 2;</code>
         */
        @Override
        public Tensor getTensor() {
            if (dataOneofCase_ == 2) {
                return (Tensor) dataOneof_;
            }
            return Tensor.getDefaultInstance();
        }
        /**
         * <code>optional .seldon.protos.Tensor tensor = 2;</code>
         */
        @Override
        public TensorOrBuilder getTensorOrBuilder() {
            if (dataOneofCase_ == 2) {
                return (Tensor) dataOneof_;
            }
            return Tensor.getDefaultInstance();
        }

        public static final int NDARRAY_FIELD_NUMBER = 3;
        /**
         * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
         */
        @Override
        public com.google.protobuf.ListValue getNdarray() {
            if (dataOneofCase_ == 3) {
                return (com.google.protobuf.ListValue) dataOneof_;
            }
            return com.google.protobuf.ListValue.getDefaultInstance();
        }
        /**
         * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
         */
        @Override
        public com.google.protobuf.ListValueOrBuilder getNdarrayOrBuilder() {
            if (dataOneofCase_ == 3) {
                return (com.google.protobuf.ListValue) dataOneof_;
            }
            return com.google.protobuf.ListValue.getDefaultInstance();
        }

        public static final int TFTENSOR_FIELD_NUMBER = 4;
        /**
         * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
         */
        @Override
        public org.tensorflow.framework.TensorProto getTftensor() {
            if (dataOneofCase_ == 4) {
                return (org.tensorflow.framework.TensorProto) dataOneof_;
            }
            return org.tensorflow.framework.TensorProto.getDefaultInstance();
        }
        /**
         * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
         */
        @Override
        public org.tensorflow.framework.TensorProtoOrBuilder getTftensorOrBuilder() {
            if (dataOneofCase_ == 4) {
                return (org.tensorflow.framework.TensorProto) dataOneof_;
            }
            return org.tensorflow.framework.TensorProto.getDefaultInstance();
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            for (int i = 0; i < names_.size(); i++) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, names_.getRaw(i));
            }
            if (dataOneofCase_ == 2) {
                output.writeMessage(2, (Tensor) dataOneof_);
            }
            if (dataOneofCase_ == 3) {
                output.writeMessage(3, (com.google.protobuf.ListValue) dataOneof_);
            }
            if (dataOneofCase_ == 4) {
                output.writeMessage(4, (org.tensorflow.framework.TensorProto) dataOneof_);
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            {
                int dataSize = 0;
                for (int i = 0; i < names_.size(); i++) {
                    dataSize += computeStringSizeNoTag(names_.getRaw(i));
                }
                size += dataSize;
                size += 1 * getNamesList().size();
            }
            if (dataOneofCase_ == 2) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(2, (Tensor) dataOneof_);
            }
            if (dataOneofCase_ == 3) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(3, (com.google.protobuf.ListValue) dataOneof_);
            }
            if (dataOneofCase_ == 4) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(4, (org.tensorflow.framework.TensorProto) dataOneof_);
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof DefaultData)) {
                return super.equals(obj);
            }
            DefaultData other = (DefaultData) obj;

            boolean result = true;
            result = result && getNamesList()
                .equals(other.getNamesList());
            result = result && getDataOneofCase().equals(
                other.getDataOneofCase());
            if (!result) {
                return false;
            }
            switch (dataOneofCase_) {
                case 2:
                    result = result && getTensor()
                        .equals(other.getTensor());
                    break;
                case 3:
                    result = result && getNdarray()
                        .equals(other.getNdarray());
                    break;
                case 4:
                    result = result && getTftensor()
                        .equals(other.getTftensor());
                    break;
                case 0:
                default:
            }
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (getNamesCount() > 0) {
                hash = (37 * hash) + NAMES_FIELD_NUMBER;
                hash = (53 * hash) + getNamesList().hashCode();
            }
            switch (dataOneofCase_) {
                case 2:
                    hash = (37 * hash) + TENSOR_FIELD_NUMBER;
                    hash = (53 * hash) + getTensor().hashCode();
                    break;
                case 3:
                    hash = (37 * hash) + NDARRAY_FIELD_NUMBER;
                    hash = (53 * hash) + getNdarray().hashCode();
                    break;
                case 4:
                    hash = (37 * hash) + TFTENSOR_FIELD_NUMBER;
                    hash = (53 * hash) + getTftensor().hashCode();
                    break;
                case 0:
                default:
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static DefaultData parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static DefaultData parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static DefaultData parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static DefaultData parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static DefaultData parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static DefaultData parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static DefaultData parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static DefaultData parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static DefaultData parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static DefaultData parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(DefaultData prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.DefaultData}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.DefaultData)
            DefaultDataOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_DefaultData_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_DefaultData_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        DefaultData.class, Builder.class);
            }

            // Construct using PredictionProtos.DefaultData.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                dataOneofCase_ = 0;
                dataOneof_ = null;
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_DefaultData_descriptor;
            }

            @Override
            public DefaultData getDefaultInstanceForType() {
                return DefaultData.getDefaultInstance();
            }

            @Override
            public DefaultData build() {
                DefaultData result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public DefaultData buildPartial() {
                DefaultData result = new DefaultData(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                    names_ = names_.getUnmodifiableView();
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.names_ = names_;
                if (dataOneofCase_ == 2) {
                    if (tensorBuilder_ == null) {
                        result.dataOneof_ = dataOneof_;
                    } else {
                        result.dataOneof_ = tensorBuilder_.build();
                    }
                }
                if (dataOneofCase_ == 3) {
                    if (ndarrayBuilder_ == null) {
                        result.dataOneof_ = dataOneof_;
                    } else {
                        result.dataOneof_ = ndarrayBuilder_.build();
                    }
                }
                if (dataOneofCase_ == 4) {
                    if (tftensorBuilder_ == null) {
                        result.dataOneof_ = dataOneof_;
                    } else {
                        result.dataOneof_ = tftensorBuilder_.build();
                    }
                }
                result.bitField0_ = to_bitField0_;
                result.dataOneofCase_ = dataOneofCase_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof DefaultData) {
                    return mergeFrom((DefaultData)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(DefaultData other) {
                if (other == DefaultData.getDefaultInstance()) {
                    return this;
                }
                if (!other.names_.isEmpty()) {
                    if (names_.isEmpty()) {
                        names_ = other.names_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureNamesIsMutable();
                        names_.addAll(other.names_);
                    }
                    onChanged();
                }
                switch (other.getDataOneofCase()) {
                    case TENSOR: {
                        mergeTensor(other.getTensor());
                        break;
                    }
                    case NDARRAY: {
                        mergeNdarray(other.getNdarray());
                        break;
                    }
                    case TFTENSOR: {
                        mergeTftensor(other.getTftensor());
                        break;
                    }
                    case DATAONEOF_NOT_SET: {
                        break;
                    }
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                DefaultData parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (DefaultData) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int dataOneofCase_ = 0;
            private Object dataOneof_;
            @Override
            public DataOneofCase
            getDataOneofCase() {
                return DataOneofCase.forNumber(
                    dataOneofCase_);
            }

            public Builder clearDataOneof() {
                dataOneofCase_ = 0;
                dataOneof_ = null;
                onChanged();
                return this;
            }

            private int bitField0_;

            private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            private void ensureNamesIsMutable() {
                if (!((bitField0_ & 0x00000001) == 0x00000001)) {
                    names_ = new com.google.protobuf.LazyStringArrayList(names_);
                    bitField0_ |= 0x00000001;
                }
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            @Override
            public com.google.protobuf.ProtocolStringList
            getNamesList() {
                return names_.getUnmodifiableView();
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            @Override
            public int getNamesCount() {
                return names_.size();
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            @Override
            public String getNames(int index) {
                return names_.get(index);
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getNamesBytes(int index) {
                return names_.getByteString(index);
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            public Builder setNames(
                int index, String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureNamesIsMutable();
                names_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            public Builder addNames(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureNamesIsMutable();
                names_.add(value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            public Builder addAllNames(
                Iterable<String> values) {
                ensureNamesIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, names_);
                onChanged();
                return this;
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            public Builder clearNames() {
                names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }
            /**
             * <code>repeated string names = 1;</code>
             */
            public Builder addNamesBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ensureNamesIsMutable();
                names_.add(value);
                onChanged();
                return this;
            }

            private com.google.protobuf.SingleFieldBuilderV3<
                Tensor, Tensor.Builder, TensorOrBuilder> tensorBuilder_;
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            @Override
            public Tensor getTensor() {
                if (tensorBuilder_ == null) {
                    if (dataOneofCase_ == 2) {
                        return (Tensor) dataOneof_;
                    }
                    return Tensor.getDefaultInstance();
                } else {
                    if (dataOneofCase_ == 2) {
                        return tensorBuilder_.getMessage();
                    }
                    return Tensor.getDefaultInstance();
                }
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            public Builder setTensor(Tensor value) {
                if (tensorBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dataOneof_ = value;
                    onChanged();
                } else {
                    tensorBuilder_.setMessage(value);
                }
                dataOneofCase_ = 2;
                return this;
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            public Builder setTensor(
                Tensor.Builder builderForValue) {
                if (tensorBuilder_ == null) {
                    dataOneof_ = builderForValue.build();
                    onChanged();
                } else {
                    tensorBuilder_.setMessage(builderForValue.build());
                }
                dataOneofCase_ = 2;
                return this;
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            public Builder mergeTensor(Tensor value) {
                if (tensorBuilder_ == null) {
                    if (dataOneofCase_ == 2 &&
                        dataOneof_ != Tensor.getDefaultInstance()) {
                        dataOneof_ = Tensor.newBuilder((Tensor) dataOneof_)
                            .mergeFrom(value).buildPartial();
                    } else {
                        dataOneof_ = value;
                    }
                    onChanged();
                } else {
                    if (dataOneofCase_ == 2) {
                        tensorBuilder_.mergeFrom(value);
                    }
                    tensorBuilder_.setMessage(value);
                }
                dataOneofCase_ = 2;
                return this;
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            public Builder clearTensor() {
                if (tensorBuilder_ == null) {
                    if (dataOneofCase_ == 2) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                        onChanged();
                    }
                } else {
                    if (dataOneofCase_ == 2) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                    }
                    tensorBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            public Tensor.Builder getTensorBuilder() {
                return getTensorFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            @Override
            public TensorOrBuilder getTensorOrBuilder() {
                if ((dataOneofCase_ == 2) && (tensorBuilder_ != null)) {
                    return tensorBuilder_.getMessageOrBuilder();
                } else {
                    if (dataOneofCase_ == 2) {
                        return (Tensor) dataOneof_;
                    }
                    return Tensor.getDefaultInstance();
                }
            }
            /**
             * <code>optional .seldon.protos.Tensor tensor = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                Tensor, Tensor.Builder, TensorOrBuilder>
            getTensorFieldBuilder() {
                if (tensorBuilder_ == null) {
                    if (!(dataOneofCase_ == 2)) {
                        dataOneof_ = Tensor.getDefaultInstance();
                    }
                    tensorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        Tensor, Tensor.Builder, TensorOrBuilder>(
                        (Tensor) dataOneof_,
                        getParentForChildren(),
                        isClean());
                    dataOneof_ = null;
                }
                dataOneofCase_ = 2;
                onChanged();;
                return tensorBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.ListValue, com.google.protobuf.ListValue.Builder, com.google.protobuf.ListValueOrBuilder> ndarrayBuilder_;
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            @Override
            public com.google.protobuf.ListValue getNdarray() {
                if (ndarrayBuilder_ == null) {
                    if (dataOneofCase_ == 3) {
                        return (com.google.protobuf.ListValue) dataOneof_;
                    }
                    return com.google.protobuf.ListValue.getDefaultInstance();
                } else {
                    if (dataOneofCase_ == 3) {
                        return ndarrayBuilder_.getMessage();
                    }
                    return com.google.protobuf.ListValue.getDefaultInstance();
                }
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            public Builder setNdarray(com.google.protobuf.ListValue value) {
                if (ndarrayBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dataOneof_ = value;
                    onChanged();
                } else {
                    ndarrayBuilder_.setMessage(value);
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            public Builder setNdarray(
                com.google.protobuf.ListValue.Builder builderForValue) {
                if (ndarrayBuilder_ == null) {
                    dataOneof_ = builderForValue.build();
                    onChanged();
                } else {
                    ndarrayBuilder_.setMessage(builderForValue.build());
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            public Builder mergeNdarray(com.google.protobuf.ListValue value) {
                if (ndarrayBuilder_ == null) {
                    if (dataOneofCase_ == 3 &&
                        dataOneof_ != com.google.protobuf.ListValue.getDefaultInstance()) {
                        dataOneof_ = com.google.protobuf.ListValue.newBuilder((com.google.protobuf.ListValue) dataOneof_)
                            .mergeFrom(value).buildPartial();
                    } else {
                        dataOneof_ = value;
                    }
                    onChanged();
                } else {
                    if (dataOneofCase_ == 3) {
                        ndarrayBuilder_.mergeFrom(value);
                    }
                    ndarrayBuilder_.setMessage(value);
                }
                dataOneofCase_ = 3;
                return this;
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            public Builder clearNdarray() {
                if (ndarrayBuilder_ == null) {
                    if (dataOneofCase_ == 3) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                        onChanged();
                    }
                } else {
                    if (dataOneofCase_ == 3) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                    }
                    ndarrayBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            public com.google.protobuf.ListValue.Builder getNdarrayBuilder() {
                return getNdarrayFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            @Override
            public com.google.protobuf.ListValueOrBuilder getNdarrayOrBuilder() {
                if ((dataOneofCase_ == 3) && (ndarrayBuilder_ != null)) {
                    return ndarrayBuilder_.getMessageOrBuilder();
                } else {
                    if (dataOneofCase_ == 3) {
                        return (com.google.protobuf.ListValue) dataOneof_;
                    }
                    return com.google.protobuf.ListValue.getDefaultInstance();
                }
            }
            /**
             * <code>optional .google.protobuf.ListValue ndarray = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.ListValue, com.google.protobuf.ListValue.Builder, com.google.protobuf.ListValueOrBuilder>
            getNdarrayFieldBuilder() {
                if (ndarrayBuilder_ == null) {
                    if (!(dataOneofCase_ == 3)) {
                        dataOneof_ = com.google.protobuf.ListValue.getDefaultInstance();
                    }
                    ndarrayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        com.google.protobuf.ListValue, com.google.protobuf.ListValue.Builder, com.google.protobuf.ListValueOrBuilder>(
                        (com.google.protobuf.ListValue) dataOneof_,
                        getParentForChildren(),
                        isClean());
                    dataOneof_ = null;
                }
                dataOneofCase_ = 3;
                onChanged();;
                return ndarrayBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<
                org.tensorflow.framework.TensorProto, org.tensorflow.framework.TensorProto.Builder, org.tensorflow.framework.TensorProtoOrBuilder> tftensorBuilder_;
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            @Override
            public org.tensorflow.framework.TensorProto getTftensor() {
                if (tftensorBuilder_ == null) {
                    if (dataOneofCase_ == 4) {
                        return (org.tensorflow.framework.TensorProto) dataOneof_;
                    }
                    return org.tensorflow.framework.TensorProto.getDefaultInstance();
                } else {
                    if (dataOneofCase_ == 4) {
                        return tftensorBuilder_.getMessage();
                    }
                    return org.tensorflow.framework.TensorProto.getDefaultInstance();
                }
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            public Builder setTftensor(org.tensorflow.framework.TensorProto value) {
                if (tftensorBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    dataOneof_ = value;
                    onChanged();
                } else {
                    tftensorBuilder_.setMessage(value);
                }
                dataOneofCase_ = 4;
                return this;
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            public Builder setTftensor(
                org.tensorflow.framework.TensorProto.Builder builderForValue) {
                if (tftensorBuilder_ == null) {
                    dataOneof_ = builderForValue.build();
                    onChanged();
                } else {
                    tftensorBuilder_.setMessage(builderForValue.build());
                }
                dataOneofCase_ = 4;
                return this;
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            public Builder mergeTftensor(org.tensorflow.framework.TensorProto value) {
                if (tftensorBuilder_ == null) {
                    if (dataOneofCase_ == 4 &&
                        dataOneof_ != org.tensorflow.framework.TensorProto.getDefaultInstance()) {
                        dataOneof_ = org.tensorflow.framework.TensorProto.newBuilder((org.tensorflow.framework.TensorProto) dataOneof_)
                            .mergeFrom(value).buildPartial();
                    } else {
                        dataOneof_ = value;
                    }
                    onChanged();
                } else {
                    if (dataOneofCase_ == 4) {
                        tftensorBuilder_.mergeFrom(value);
                    }
                    tftensorBuilder_.setMessage(value);
                }
                dataOneofCase_ = 4;
                return this;
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            public Builder clearTftensor() {
                if (tftensorBuilder_ == null) {
                    if (dataOneofCase_ == 4) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                        onChanged();
                    }
                } else {
                    if (dataOneofCase_ == 4) {
                        dataOneofCase_ = 0;
                        dataOneof_ = null;
                    }
                    tftensorBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            public org.tensorflow.framework.TensorProto.Builder getTftensorBuilder() {
                return getTftensorFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            @Override
            public org.tensorflow.framework.TensorProtoOrBuilder getTftensorOrBuilder() {
                if ((dataOneofCase_ == 4) && (tftensorBuilder_ != null)) {
                    return tftensorBuilder_.getMessageOrBuilder();
                } else {
                    if (dataOneofCase_ == 4) {
                        return (org.tensorflow.framework.TensorProto) dataOneof_;
                    }
                    return org.tensorflow.framework.TensorProto.getDefaultInstance();
                }
            }
            /**
             * <code>optional .tensorflow.TensorProto tftensor = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                org.tensorflow.framework.TensorProto, org.tensorflow.framework.TensorProto.Builder, org.tensorflow.framework.TensorProtoOrBuilder>
            getTftensorFieldBuilder() {
                if (tftensorBuilder_ == null) {
                    if (!(dataOneofCase_ == 4)) {
                        dataOneof_ = org.tensorflow.framework.TensorProto.getDefaultInstance();
                    }
                    tftensorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        org.tensorflow.framework.TensorProto, org.tensorflow.framework.TensorProto.Builder, org.tensorflow.framework.TensorProtoOrBuilder>(
                        (org.tensorflow.framework.TensorProto) dataOneof_,
                        getParentForChildren(),
                        isClean());
                    dataOneof_ = null;
                }
                dataOneofCase_ = 4;
                onChanged();;
                return tftensorBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.DefaultData)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.DefaultData)
        private static final DefaultData DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new DefaultData();
        }

        public static DefaultData getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DefaultData>
            PARSER = new com.google.protobuf.AbstractParser<DefaultData>() {
            @Override
            public DefaultData parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new DefaultData(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<DefaultData> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<DefaultData> getParserForType() {
            return PARSER;
        }

        @Override
        public DefaultData getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface TensorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.Tensor)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        java.util.List<Integer> getShapeList();
        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        int getShapeCount();
        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        int getShape(int index);

        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        java.util.List<Double> getValuesList();
        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        int getValuesCount();
        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        double getValues(int index);
    }
    /**
     * Protobuf type {@code seldon.protos.Tensor}
     */
    public  static final class Tensor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.Tensor)
        TensorOrBuilder {
        // Use Tensor.newBuilder() to construct.
        private Tensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Tensor() {
            shape_ = java.util.Collections.emptyList();
            values_ = java.util.Collections.emptyList();
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private Tensor(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 8: {
                            if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                                shape_ = new java.util.ArrayList<Integer>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            shape_.add(input.readInt32());
                            break;
                        }
                        case 10: {
                            int length = input.readRawVarint32();
                            int limit = input.pushLimit(length);
                            if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                                shape_ = new java.util.ArrayList<Integer>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            while (input.getBytesUntilLimit() > 0) {
                                shape_.add(input.readInt32());
                            }
                            input.popLimit(limit);
                            break;
                        }
                        case 17: {
                            if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                                values_ = new java.util.ArrayList<Double>();
                                mutable_bitField0_ |= 0x00000002;
                            }
                            values_.add(input.readDouble());
                            break;
                        }
                        case 18: {
                            int length = input.readRawVarint32();
                            int limit = input.pushLimit(length);
                            if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                                values_ = new java.util.ArrayList<Double>();
                                mutable_bitField0_ |= 0x00000002;
                            }
                            while (input.getBytesUntilLimit() > 0) {
                                values_.add(input.readDouble());
                            }
                            input.popLimit(limit);
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    shape_ = java.util.Collections.unmodifiableList(shape_);
                }
                if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    values_ = java.util.Collections.unmodifiableList(values_);
                }
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_Tensor_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_Tensor_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    Tensor.class, Builder.class);
        }

        public static final int SHAPE_FIELD_NUMBER = 1;
        private java.util.List<Integer> shape_;
        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        @Override
        public java.util.List<Integer>
        getShapeList() {
            return shape_;
        }
        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        @Override
        public int getShapeCount() {
            return shape_.size();
        }
        /**
         * <code>repeated int32 shape = 1 [packed = true];</code>
         */
        @Override
        public int getShape(int index) {
            return shape_.get(index);
        }
        private int shapeMemoizedSerializedSize = -1;

        public static final int VALUES_FIELD_NUMBER = 2;
        private java.util.List<Double> values_;
        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        @Override
        public java.util.List<Double>
        getValuesList() {
            return values_;
        }
        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        @Override
        public int getValuesCount() {
            return values_.size();
        }
        /**
         * <code>repeated double values = 2 [packed = true];</code>
         */
        @Override
        public double getValues(int index) {
            return values_.get(index);
        }
        private int valuesMemoizedSerializedSize = -1;

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            getSerializedSize();
            if (getShapeList().size() > 0) {
                output.writeUInt32NoTag(10);
                output.writeUInt32NoTag(shapeMemoizedSerializedSize);
            }
            for (int i = 0; i < shape_.size(); i++) {
                output.writeInt32NoTag(shape_.get(i));
            }
            if (getValuesList().size() > 0) {
                output.writeUInt32NoTag(18);
                output.writeUInt32NoTag(valuesMemoizedSerializedSize);
            }
            for (int i = 0; i < values_.size(); i++) {
                output.writeDoubleNoTag(values_.get(i));
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            {
                int dataSize = 0;
                for (int i = 0; i < shape_.size(); i++) {
                    dataSize += com.google.protobuf.CodedOutputStream
                        .computeInt32SizeNoTag(shape_.get(i));
                }
                size += dataSize;
                if (!getShapeList().isEmpty()) {
                    size += 1;
                    size += com.google.protobuf.CodedOutputStream
                        .computeInt32SizeNoTag(dataSize);
                }
                shapeMemoizedSerializedSize = dataSize;
            }
            {
                int dataSize = 0;
                dataSize = 8 * getValuesList().size();
                size += dataSize;
                if (!getValuesList().isEmpty()) {
                    size += 1;
                    size += com.google.protobuf.CodedOutputStream
                        .computeInt32SizeNoTag(dataSize);
                }
                valuesMemoizedSerializedSize = dataSize;
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof Tensor)) {
                return super.equals(obj);
            }
            Tensor other = (Tensor) obj;

            boolean result = true;
            result = result && getShapeList()
                .equals(other.getShapeList());
            result = result && getValuesList()
                .equals(other.getValuesList());
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (getShapeCount() > 0) {
                hash = (37 * hash) + SHAPE_FIELD_NUMBER;
                hash = (53 * hash) + getShapeList().hashCode();
            }
            if (getValuesCount() > 0) {
                hash = (37 * hash) + VALUES_FIELD_NUMBER;
                hash = (53 * hash) + getValuesList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static Tensor parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Tensor parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Tensor parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Tensor parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Tensor parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Tensor parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static Tensor parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static Tensor parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static Tensor parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Tensor parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(Tensor prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.Tensor}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.Tensor)
            TensorOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_Tensor_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_Tensor_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        Tensor.class, Builder.class);
            }

            // Construct using PredictionProtos.Tensor.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                shape_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
                values_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_Tensor_descriptor;
            }

            @Override
            public Tensor getDefaultInstanceForType() {
                return Tensor.getDefaultInstance();
            }

            @Override
            public Tensor build() {
                Tensor result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public Tensor buildPartial() {
                Tensor result = new Tensor(this);
                int from_bitField0_ = bitField0_;
                if (((bitField0_ & 0x00000001) == 0x00000001)) {
                    shape_ = java.util.Collections.unmodifiableList(shape_);
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.shape_ = shape_;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                    values_ = java.util.Collections.unmodifiableList(values_);
                    bitField0_ = (bitField0_ & ~0x00000002);
                }
                result.values_ = values_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof Tensor) {
                    return mergeFrom((Tensor)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(Tensor other) {
                if (other == Tensor.getDefaultInstance()) {
                    return this;
                }
                if (!other.shape_.isEmpty()) {
                    if (shape_.isEmpty()) {
                        shape_ = other.shape_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureShapeIsMutable();
                        shape_.addAll(other.shape_);
                    }
                    onChanged();
                }
                if (!other.values_.isEmpty()) {
                    if (values_.isEmpty()) {
                        values_ = other.values_;
                        bitField0_ = (bitField0_ & ~0x00000002);
                    } else {
                        ensureValuesIsMutable();
                        values_.addAll(other.values_);
                    }
                    onChanged();
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                Tensor parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (Tensor) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<Integer> shape_ = java.util.Collections.emptyList();
            private void ensureShapeIsMutable() {
                if (!((bitField0_ & 0x00000001) == 0x00000001)) {
                    shape_ = new java.util.ArrayList<Integer>(shape_);
                    bitField0_ |= 0x00000001;
                }
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            @Override
            public java.util.List<Integer>
            getShapeList() {
                return java.util.Collections.unmodifiableList(shape_);
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            @Override
            public int getShapeCount() {
                return shape_.size();
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            @Override
            public int getShape(int index) {
                return shape_.get(index);
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            public Builder setShape(
                int index, int value) {
                ensureShapeIsMutable();
                shape_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            public Builder addShape(int value) {
                ensureShapeIsMutable();
                shape_.add(value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            public Builder addAllShape(
                Iterable<? extends Integer> values) {
                ensureShapeIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, shape_);
                onChanged();
                return this;
            }
            /**
             * <code>repeated int32 shape = 1 [packed = true];</code>
             */
            public Builder clearShape() {
                shape_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            private java.util.List<Double> values_ = java.util.Collections.emptyList();
            private void ensureValuesIsMutable() {
                if (!((bitField0_ & 0x00000002) == 0x00000002)) {
                    values_ = new java.util.ArrayList<Double>(values_);
                    bitField0_ |= 0x00000002;
                }
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            @Override
            public java.util.List<Double>
            getValuesList() {
                return java.util.Collections.unmodifiableList(values_);
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            @Override
            public int getValuesCount() {
                return values_.size();
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            @Override
            public double getValues(int index) {
                return values_.get(index);
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            public Builder setValues(
                int index, double value) {
                ensureValuesIsMutable();
                values_.set(index, value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            public Builder addValues(double value) {
                ensureValuesIsMutable();
                values_.add(value);
                onChanged();
                return this;
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            public Builder addAllValues(
                Iterable<? extends Double> values) {
                ensureValuesIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, values_);
                onChanged();
                return this;
            }
            /**
             * <code>repeated double values = 2 [packed = true];</code>
             */
            public Builder clearValues() {
                values_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.Tensor)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.Tensor)
        private static final Tensor DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new Tensor();
        }

        public static Tensor getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Tensor>
            PARSER = new com.google.protobuf.AbstractParser<Tensor>() {
            @Override
            public Tensor parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new Tensor(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<Tensor> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<Tensor> getParserForType() {
            return PARSER;
        }

        @Override
        public Tensor getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface MetaOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.Meta)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional string puid = 1;</code>
         */
        String getPuid();
        /**
         * <code>optional string puid = 1;</code>
         */
        com.google.protobuf.ByteString
        getPuidBytes();

        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */
        int getTagsCount();
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */
        boolean containsTags(
            String key);
        /**
         * Use {@link #getTagsMap()} instead.
         */
        @Deprecated
        java.util.Map<String, com.google.protobuf.Value>
        getTags();
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */
        java.util.Map<String, com.google.protobuf.Value>
        getTagsMap();
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        com.google.protobuf.Value getTagsOrDefault(
            String key,
            com.google.protobuf.Value defaultValue);
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        com.google.protobuf.Value getTagsOrThrow(
            String key);

        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */
        int getRoutingCount();
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */
        boolean containsRouting(
            String key);
        /**
         * Use {@link #getRoutingMap()} instead.
         */
        @Deprecated
        java.util.Map<String, Integer>
        getRouting();
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */
        java.util.Map<String, Integer>
        getRoutingMap();
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        int getRoutingOrDefault(
            String key,
            int defaultValue);
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        int getRoutingOrThrow(
            String key);

        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */
        int getRequestPathCount();
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */
        boolean containsRequestPath(
            String key);
        /**
         * Use {@link #getRequestPathMap()} instead.
         */
        @Deprecated
        java.util.Map<String, String>
        getRequestPath();
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */
        java.util.Map<String, String>
        getRequestPathMap();
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        String getRequestPathOrDefault(
            String key,
            String defaultValue);
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        String getRequestPathOrThrow(
            String key);

        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        java.util.List<Metric>
        getMetricsList();
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        Metric getMetrics(int index);
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        int getMetricsCount();
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        java.util.List<? extends MetricOrBuilder>
        getMetricsOrBuilderList();
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        MetricOrBuilder getMetricsOrBuilder(
            int index);
    }
    /**
     * Protobuf type {@code seldon.protos.Meta}
     */
    public  static final class Meta extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.Meta)
        MetaOrBuilder {
        // Use Meta.newBuilder() to construct.
        private Meta(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Meta() {
            puid_ = "";
            metrics_ = java.util.Collections.emptyList();
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private Meta(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            String s = input.readStringRequireUtf8();

                            puid_ = s;
                            break;
                        }
                        case 18: {
                            if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                                tags_ = com.google.protobuf.MapField.newMapField(
                                    TagsDefaultEntryHolder.defaultEntry);
                                mutable_bitField0_ |= 0x00000002;
                            }
                            com.google.protobuf.MapEntry<String, com.google.protobuf.Value>
                                tags = input.readMessage(
                                TagsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                            tags_.getMutableMap().put(tags.getKey(), tags.getValue());
                            break;
                        }
                        case 26: {
                            if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                                routing_ = com.google.protobuf.MapField.newMapField(
                                    RoutingDefaultEntryHolder.defaultEntry);
                                mutable_bitField0_ |= 0x00000004;
                            }
                            com.google.protobuf.MapEntry<String, Integer>
                                routing = input.readMessage(
                                RoutingDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                            routing_.getMutableMap().put(routing.getKey(), routing.getValue());
                            break;
                        }
                        case 34: {
                            if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                                requestPath_ = com.google.protobuf.MapField.newMapField(
                                    RequestPathDefaultEntryHolder.defaultEntry);
                                mutable_bitField0_ |= 0x00000008;
                            }
                            com.google.protobuf.MapEntry<String, String>
                                requestPath = input.readMessage(
                                RequestPathDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                            requestPath_.getMutableMap().put(requestPath.getKey(), requestPath.getValue());
                            break;
                        }
                        case 42: {
                            if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                                metrics_ = new java.util.ArrayList<Metric>();
                                mutable_bitField0_ |= 0x00000010;
                            }
                            metrics_.add(
                                input.readMessage(Metric.parser(), extensionRegistry));
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    metrics_ = java.util.Collections.unmodifiableList(metrics_);
                }
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_Meta_descriptor;
        }

        @Override
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
            switch (number) {
                case 2:
                    return internalGetTags();
                case 3:
                    return internalGetRouting();
                case 4:
                    return internalGetRequestPath();
                default:
                    throw new RuntimeException(
                        "Invalid map field number: " + number);
            }
        }
        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_Meta_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    Meta.class, Builder.class);
        }

        private int bitField0_;
        public static final int PUID_FIELD_NUMBER = 1;
        private volatile Object puid_;
        /**
         * <code>optional string puid = 1;</code>
         */
        @Override
        public String getPuid() {
            Object ref = puid_;
            if (ref instanceof String) {
                return (String) ref;
            } else {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                String s = bs.toStringUtf8();
                puid_ = s;
                return s;
            }
        }
        /**
         * <code>optional string puid = 1;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getPuidBytes() {
            Object ref = puid_;
            if (ref instanceof String) {
                com.google.protobuf.ByteString b =
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (String) ref);
                puid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TAGS_FIELD_NUMBER = 2;
        private static final class TagsDefaultEntryHolder {
            static final com.google.protobuf.MapEntry<
                String, com.google.protobuf.Value> defaultEntry =
                com.google.protobuf.MapEntry
                    .<String, com.google.protobuf.Value>newDefaultInstance(
                        PredictionProtos.internal_static_seldon_protos_Meta_TagsEntry_descriptor,
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "",
                        com.google.protobuf.WireFormat.FieldType.MESSAGE,
                        com.google.protobuf.Value.getDefaultInstance());
        }
        private com.google.protobuf.MapField<
            String, com.google.protobuf.Value> tags_;
        private com.google.protobuf.MapField<String, com.google.protobuf.Value>
        internalGetTags() {
            if (tags_ == null) {
                return com.google.protobuf.MapField.emptyMapField(
                    TagsDefaultEntryHolder.defaultEntry);
            }
            return tags_;
        }

        @Override
        public int getTagsCount() {
            return internalGetTags().getMap().size();
        }
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        @Override
        public boolean containsTags(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            return internalGetTags().getMap().containsKey(key);
        }
        /**
         * Use {@link #getTagsMap()} instead.
         */
        @Override
        @Deprecated
        public java.util.Map<String, com.google.protobuf.Value> getTags() {
            return getTagsMap();
        }
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        @Override
        public java.util.Map<String, com.google.protobuf.Value> getTagsMap() {
            return internalGetTags().getMap();
        }
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        @Override
        public com.google.protobuf.Value getTagsOrDefault(
            String key,
            com.google.protobuf.Value defaultValue) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, com.google.protobuf.Value> map =
                internalGetTags().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
         */

        @Override
        public com.google.protobuf.Value getTagsOrThrow(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, com.google.protobuf.Value> map =
                internalGetTags().getMap();
            if (!map.containsKey(key)) {
                throw new IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int ROUTING_FIELD_NUMBER = 3;
        private static final class RoutingDefaultEntryHolder {
            static final com.google.protobuf.MapEntry<
                String, Integer> defaultEntry =
                com.google.protobuf.MapEntry
                    .<String, Integer>newDefaultInstance(
                        PredictionProtos.internal_static_seldon_protos_Meta_RoutingEntry_descriptor,
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "",
                        com.google.protobuf.WireFormat.FieldType.INT32,
                        0);
        }
        private com.google.protobuf.MapField<
            String, Integer> routing_;
        private com.google.protobuf.MapField<String, Integer>
        internalGetRouting() {
            if (routing_ == null) {
                return com.google.protobuf.MapField.emptyMapField(
                    RoutingDefaultEntryHolder.defaultEntry);
            }
            return routing_;
        }

        @Override
        public int getRoutingCount() {
            return internalGetRouting().getMap().size();
        }
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        @Override
        public boolean containsRouting(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            return internalGetRouting().getMap().containsKey(key);
        }
        /**
         * Use {@link #getRoutingMap()} instead.
         */
        @Override
        @Deprecated
        public java.util.Map<String, Integer> getRouting() {
            return getRoutingMap();
        }
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        @Override
        public java.util.Map<String, Integer> getRoutingMap() {
            return internalGetRouting().getMap();
        }
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        @Override
        public int getRoutingOrDefault(
            String key,
            int defaultValue) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, Integer> map =
                internalGetRouting().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, int32&gt; routing = 3;</code>
         */

        @Override
        public int getRoutingOrThrow(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, Integer> map =
                internalGetRouting().getMap();
            if (!map.containsKey(key)) {
                throw new IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int REQUESTPATH_FIELD_NUMBER = 4;
        private static final class RequestPathDefaultEntryHolder {
            static final com.google.protobuf.MapEntry<
                String, String> defaultEntry =
                com.google.protobuf.MapEntry
                    .<String, String>newDefaultInstance(
                        PredictionProtos.internal_static_seldon_protos_Meta_RequestPathEntry_descriptor,
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "",
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "");
        }
        private com.google.protobuf.MapField<
            String, String> requestPath_;
        private com.google.protobuf.MapField<String, String>
        internalGetRequestPath() {
            if (requestPath_ == null) {
                return com.google.protobuf.MapField.emptyMapField(
                    RequestPathDefaultEntryHolder.defaultEntry);
            }
            return requestPath_;
        }

        @Override
        public int getRequestPathCount() {
            return internalGetRequestPath().getMap().size();
        }
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        @Override
        public boolean containsRequestPath(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            return internalGetRequestPath().getMap().containsKey(key);
        }
        /**
         * Use {@link #getRequestPathMap()} instead.
         */
        @Override
        @Deprecated
        public java.util.Map<String, String> getRequestPath() {
            return getRequestPathMap();
        }
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        @Override
        public java.util.Map<String, String> getRequestPathMap() {
            return internalGetRequestPath().getMap();
        }
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        @Override
        public String getRequestPathOrDefault(
            String key,
            String defaultValue) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, String> map =
                internalGetRequestPath().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, string&gt; requestPath = 4;</code>
         */

        @Override
        public String getRequestPathOrThrow(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, String> map =
                internalGetRequestPath().getMap();
            if (!map.containsKey(key)) {
                throw new IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int METRICS_FIELD_NUMBER = 5;
        private java.util.List<Metric> metrics_;
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        @Override
        public java.util.List<Metric> getMetricsList() {
            return metrics_;
        }
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        @Override
        public java.util.List<? extends MetricOrBuilder>
        getMetricsOrBuilderList() {
            return metrics_;
        }
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        @Override
        public int getMetricsCount() {
            return metrics_.size();
        }
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        @Override
        public Metric getMetrics(int index) {
            return metrics_.get(index);
        }
        /**
         * <code>repeated .seldon.protos.Metric metrics = 5;</code>
         */
        @Override
        public MetricOrBuilder getMetricsOrBuilder(
            int index) {
            return metrics_.get(index);
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (!getPuidBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, puid_);
            }
            for (java.util.Map.Entry<String, com.google.protobuf.Value> entry
                : internalGetTags().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, com.google.protobuf.Value>
                    tags = TagsDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                output.writeMessage(2, tags);
            }
            for (java.util.Map.Entry<String, Integer> entry
                : internalGetRouting().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, Integer>
                    routing = RoutingDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                output.writeMessage(3, routing);
            }
            for (java.util.Map.Entry<String, String> entry
                : internalGetRequestPath().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, String>
                    requestPath = RequestPathDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                output.writeMessage(4, requestPath);
            }
            for (int i = 0; i < metrics_.size(); i++) {
                output.writeMessage(5, metrics_.get(i));
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (!getPuidBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, puid_);
            }
            for (java.util.Map.Entry<String, com.google.protobuf.Value> entry
                : internalGetTags().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, com.google.protobuf.Value>
                    tags = TagsDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(2, tags);
            }
            for (java.util.Map.Entry<String, Integer> entry
                : internalGetRouting().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, Integer>
                    routing = RoutingDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(3, routing);
            }
            for (java.util.Map.Entry<String, String> entry
                : internalGetRequestPath().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, String>
                    requestPath = RequestPathDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(4, requestPath);
            }
            for (int i = 0; i < metrics_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(5, metrics_.get(i));
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof Meta)) {
                return super.equals(obj);
            }
            Meta other = (Meta) obj;

            boolean result = true;
            result = result && getPuid()
                .equals(other.getPuid());
            result = result && internalGetTags().equals(
                other.internalGetTags());
            result = result && internalGetRouting().equals(
                other.internalGetRouting());
            result = result && internalGetRequestPath().equals(
                other.internalGetRequestPath());
            result = result && getMetricsList()
                .equals(other.getMetricsList());
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            hash = (37 * hash) + PUID_FIELD_NUMBER;
            hash = (53 * hash) + getPuid().hashCode();
            if (!internalGetTags().getMap().isEmpty()) {
                hash = (37 * hash) + TAGS_FIELD_NUMBER;
                hash = (53 * hash) + internalGetTags().hashCode();
            }
            if (!internalGetRouting().getMap().isEmpty()) {
                hash = (37 * hash) + ROUTING_FIELD_NUMBER;
                hash = (53 * hash) + internalGetRouting().hashCode();
            }
            if (!internalGetRequestPath().getMap().isEmpty()) {
                hash = (37 * hash) + REQUESTPATH_FIELD_NUMBER;
                hash = (53 * hash) + internalGetRequestPath().hashCode();
            }
            if (getMetricsCount() > 0) {
                hash = (37 * hash) + METRICS_FIELD_NUMBER;
                hash = (53 * hash) + getMetricsList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static Meta parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Meta parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Meta parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Meta parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Meta parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Meta parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static Meta parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static Meta parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static Meta parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Meta parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(Meta prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.Meta}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.Meta)
            MetaOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_Meta_descriptor;
            }

            @Override
            @SuppressWarnings({"rawtypes"})
            protected com.google.protobuf.MapField internalGetMapField(
                int number) {
                switch (number) {
                    case 2:
                        return internalGetTags();
                    case 3:
                        return internalGetRouting();
                    case 4:
                        return internalGetRequestPath();
                    default:
                        throw new RuntimeException(
                            "Invalid map field number: " + number);
                }
            }
            @Override
            @SuppressWarnings({"rawtypes"})
            protected com.google.protobuf.MapField internalGetMutableMapField(
                int number) {
                switch (number) {
                    case 2:
                        return internalGetMutableTags();
                    case 3:
                        return internalGetMutableRouting();
                    case 4:
                        return internalGetMutableRequestPath();
                    default:
                        throw new RuntimeException(
                            "Invalid map field number: " + number);
                }
            }
            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_Meta_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        Meta.class, Builder.class);
            }

            // Construct using PredictionProtos.Meta.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                    getMetricsFieldBuilder();
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                puid_ = "";

                internalGetMutableTags().clear();
                internalGetMutableRouting().clear();
                internalGetMutableRequestPath().clear();
                if (metricsBuilder_ == null) {
                    metrics_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                } else {
                    metricsBuilder_.clear();
                }
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_Meta_descriptor;
            }

            @Override
            public Meta getDefaultInstanceForType() {
                return Meta.getDefaultInstance();
            }

            @Override
            public Meta build() {
                Meta result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public Meta buildPartial() {
                Meta result = new Meta(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                result.puid_ = puid_;
                result.tags_ = internalGetTags();
                result.tags_.makeImmutable();
                result.routing_ = internalGetRouting();
                result.routing_.makeImmutable();
                result.requestPath_ = internalGetRequestPath();
                result.requestPath_.makeImmutable();
                if (metricsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) == 0x00000010)) {
                        metrics_ = java.util.Collections.unmodifiableList(metrics_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.metrics_ = metrics_;
                } else {
                    result.metrics_ = metricsBuilder_.build();
                }
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof Meta) {
                    return mergeFrom((Meta)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(Meta other) {
                if (other == Meta.getDefaultInstance()) {
                    return this;
                }
                if (!other.getPuid().isEmpty()) {
                    puid_ = other.puid_;
                    onChanged();
                }
                internalGetMutableTags().mergeFrom(
                    other.internalGetTags());
                internalGetMutableRouting().mergeFrom(
                    other.internalGetRouting());
                internalGetMutableRequestPath().mergeFrom(
                    other.internalGetRequestPath());
                if (metricsBuilder_ == null) {
                    if (!other.metrics_.isEmpty()) {
                        if (metrics_.isEmpty()) {
                            metrics_ = other.metrics_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureMetricsIsMutable();
                            metrics_.addAll(other.metrics_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.metrics_.isEmpty()) {
                        if (metricsBuilder_.isEmpty()) {
                            metricsBuilder_.dispose();
                            metricsBuilder_ = null;
                            metrics_ = other.metrics_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            metricsBuilder_ =
                                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                    getMetricsFieldBuilder() : null;
                        } else {
                            metricsBuilder_.addAllMessages(other.metrics_);
                        }
                    }
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                Meta parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (Meta) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private Object puid_ = "";
            /**
             * <code>optional string puid = 1;</code>
             */
            @Override
            public String getPuid() {
                Object ref = puid_;
                if (!(ref instanceof String)) {
                    com.google.protobuf.ByteString bs =
                        (com.google.protobuf.ByteString) ref;
                    String s = bs.toStringUtf8();
                    puid_ = s;
                    return s;
                } else {
                    return (String) ref;
                }
            }
            /**
             * <code>optional string puid = 1;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getPuidBytes() {
                Object ref = puid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                            (String) ref);
                    puid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>optional string puid = 1;</code>
             */
            public Builder setPuid(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                puid_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional string puid = 1;</code>
             */
            public Builder clearPuid() {

                puid_ = getDefaultInstance().getPuid();
                onChanged();
                return this;
            }
            /**
             * <code>optional string puid = 1;</code>
             */
            public Builder setPuidBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                puid_ = value;
                onChanged();
                return this;
            }

            private com.google.protobuf.MapField<
                String, com.google.protobuf.Value> tags_;
            private com.google.protobuf.MapField<String, com.google.protobuf.Value>
            internalGetTags() {
                if (tags_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(
                        TagsDefaultEntryHolder.defaultEntry);
                }
                return tags_;
            }
            private com.google.protobuf.MapField<String, com.google.protobuf.Value>
            internalGetMutableTags() {
                onChanged();;
                if (tags_ == null) {
                    tags_ = com.google.protobuf.MapField.newMapField(
                        TagsDefaultEntryHolder.defaultEntry);
                }
                if (!tags_.isMutable()) {
                    tags_ = tags_.copy();
                }
                return tags_;
            }

            @Override
            public int getTagsCount() {
                return internalGetTags().getMap().size();
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            @Override
            public boolean containsTags(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                return internalGetTags().getMap().containsKey(key);
            }
            /**
             * Use {@link #getTagsMap()} instead.
             */
            @Override
            @Deprecated
            public java.util.Map<String, com.google.protobuf.Value> getTags() {
                return getTagsMap();
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            @Override
            public java.util.Map<String, com.google.protobuf.Value> getTagsMap() {
                return internalGetTags().getMap();
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            @Override
            public com.google.protobuf.Value getTagsOrDefault(
                String key,
                com.google.protobuf.Value defaultValue) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, com.google.protobuf.Value> map =
                    internalGetTags().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            @Override
            public com.google.protobuf.Value getTagsOrThrow(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, com.google.protobuf.Value> map =
                    internalGetTags().getMap();
                if (!map.containsKey(key)) {
                    throw new IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearTags() {
                getMutableTags().clear();
                return this;
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            public Builder removeTags(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                getMutableTags().remove(key);
                return this;
            }
            /**
             * Use alternate mutation accessors instead.
             */
            @Deprecated
            public java.util.Map<String, com.google.protobuf.Value>
            getMutableTags() {
                return internalGetMutableTags().getMutableMap();
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */
            public Builder putTags(
                String key,
                com.google.protobuf.Value value) {
                if (key == null) { throw new NullPointerException(); }
                if (value == null) { throw new NullPointerException(); }
                getMutableTags().put(key, value);
                return this;
            }
            /**
             * <code>map&lt;string, .google.protobuf.Value&gt; tags = 2;</code>
             */

            public Builder putAllTags(
                java.util.Map<String, com.google.protobuf.Value> values) {
                getMutableTags().putAll(values);
                return this;
            }

            private com.google.protobuf.MapField<
                String, Integer> routing_;
            private com.google.protobuf.MapField<String, Integer>
            internalGetRouting() {
                if (routing_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(
                        RoutingDefaultEntryHolder.defaultEntry);
                }
                return routing_;
            }
            private com.google.protobuf.MapField<String, Integer>
            internalGetMutableRouting() {
                onChanged();;
                if (routing_ == null) {
                    routing_ = com.google.protobuf.MapField.newMapField(
                        RoutingDefaultEntryHolder.defaultEntry);
                }
                if (!routing_.isMutable()) {
                    routing_ = routing_.copy();
                }
                return routing_;
            }

            @Override
            public int getRoutingCount() {
                return internalGetRouting().getMap().size();
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            @Override
            public boolean containsRouting(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                return internalGetRouting().getMap().containsKey(key);
            }
            /**
             * Use {@link #getRoutingMap()} instead.
             */
            @Override
            @Deprecated
            public java.util.Map<String, Integer> getRouting() {
                return getRoutingMap();
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            @Override
            public java.util.Map<String, Integer> getRoutingMap() {
                return internalGetRouting().getMap();
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            @Override
            public int getRoutingOrDefault(
                String key,
                int defaultValue) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, Integer> map =
                    internalGetRouting().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            @Override
            public int getRoutingOrThrow(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, Integer> map =
                    internalGetRouting().getMap();
                if (!map.containsKey(key)) {
                    throw new IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearRouting() {
                getMutableRouting().clear();
                return this;
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            public Builder removeRouting(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                getMutableRouting().remove(key);
                return this;
            }
            /**
             * Use alternate mutation accessors instead.
             */
            @Deprecated
            public java.util.Map<String, Integer>
            getMutableRouting() {
                return internalGetMutableRouting().getMutableMap();
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */
            public Builder putRouting(
                String key,
                int value) {
                if (key == null) { throw new NullPointerException(); }

                getMutableRouting().put(key, value);
                return this;
            }
            /**
             * <code>map&lt;string, int32&gt; routing = 3;</code>
             */

            public Builder putAllRouting(
                java.util.Map<String, Integer> values) {
                getMutableRouting().putAll(values);
                return this;
            }

            private com.google.protobuf.MapField<
                String, String> requestPath_;
            private com.google.protobuf.MapField<String, String>
            internalGetRequestPath() {
                if (requestPath_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(
                        RequestPathDefaultEntryHolder.defaultEntry);
                }
                return requestPath_;
            }
            private com.google.protobuf.MapField<String, String>
            internalGetMutableRequestPath() {
                onChanged();;
                if (requestPath_ == null) {
                    requestPath_ = com.google.protobuf.MapField.newMapField(
                        RequestPathDefaultEntryHolder.defaultEntry);
                }
                if (!requestPath_.isMutable()) {
                    requestPath_ = requestPath_.copy();
                }
                return requestPath_;
            }

            @Override
            public int getRequestPathCount() {
                return internalGetRequestPath().getMap().size();
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            @Override
            public boolean containsRequestPath(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                return internalGetRequestPath().getMap().containsKey(key);
            }
            /**
             * Use {@link #getRequestPathMap()} instead.
             */
            @Override
            @Deprecated
            public java.util.Map<String, String> getRequestPath() {
                return getRequestPathMap();
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            @Override
            public java.util.Map<String, String> getRequestPathMap() {
                return internalGetRequestPath().getMap();
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            @Override
            public String getRequestPathOrDefault(
                String key,
                String defaultValue) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, String> map =
                    internalGetRequestPath().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            @Override
            public String getRequestPathOrThrow(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, String> map =
                    internalGetRequestPath().getMap();
                if (!map.containsKey(key)) {
                    throw new IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearRequestPath() {
                getMutableRequestPath().clear();
                return this;
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            public Builder removeRequestPath(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                getMutableRequestPath().remove(key);
                return this;
            }
            /**
             * Use alternate mutation accessors instead.
             */
            @Deprecated
            public java.util.Map<String, String>
            getMutableRequestPath() {
                return internalGetMutableRequestPath().getMutableMap();
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */
            public Builder putRequestPath(
                String key,
                String value) {
                if (key == null) { throw new NullPointerException(); }
                if (value == null) { throw new NullPointerException(); }
                getMutableRequestPath().put(key, value);
                return this;
            }
            /**
             * <code>map&lt;string, string&gt; requestPath = 4;</code>
             */

            public Builder putAllRequestPath(
                java.util.Map<String, String> values) {
                getMutableRequestPath().putAll(values);
                return this;
            }

            private java.util.List<Metric> metrics_ =
                java.util.Collections.emptyList();
            private void ensureMetricsIsMutable() {
                if (!((bitField0_ & 0x00000010) == 0x00000010)) {
                    metrics_ = new java.util.ArrayList<Metric>(metrics_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                Metric, Metric.Builder, MetricOrBuilder> metricsBuilder_;

            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            @Override
            public java.util.List<Metric> getMetricsList() {
                if (metricsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(metrics_);
                } else {
                    return metricsBuilder_.getMessageList();
                }
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            @Override
            public int getMetricsCount() {
                if (metricsBuilder_ == null) {
                    return metrics_.size();
                } else {
                    return metricsBuilder_.getCount();
                }
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            @Override
            public Metric getMetrics(int index) {
                if (metricsBuilder_ == null) {
                    return metrics_.get(index);
                } else {
                    return metricsBuilder_.getMessage(index);
                }
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder setMetrics(
                int index, Metric value) {
                if (metricsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureMetricsIsMutable();
                    metrics_.set(index, value);
                    onChanged();
                } else {
                    metricsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder setMetrics(
                int index, Metric.Builder builderForValue) {
                if (metricsBuilder_ == null) {
                    ensureMetricsIsMutable();
                    metrics_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    metricsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder addMetrics(Metric value) {
                if (metricsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureMetricsIsMutable();
                    metrics_.add(value);
                    onChanged();
                } else {
                    metricsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder addMetrics(
                int index, Metric value) {
                if (metricsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureMetricsIsMutable();
                    metrics_.add(index, value);
                    onChanged();
                } else {
                    metricsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder addMetrics(
                Metric.Builder builderForValue) {
                if (metricsBuilder_ == null) {
                    ensureMetricsIsMutable();
                    metrics_.add(builderForValue.build());
                    onChanged();
                } else {
                    metricsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder addMetrics(
                int index, Metric.Builder builderForValue) {
                if (metricsBuilder_ == null) {
                    ensureMetricsIsMutable();
                    metrics_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    metricsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder addAllMetrics(
                Iterable<? extends Metric> values) {
                if (metricsBuilder_ == null) {
                    ensureMetricsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, metrics_);
                    onChanged();
                } else {
                    metricsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder clearMetrics() {
                if (metricsBuilder_ == null) {
                    metrics_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    metricsBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Builder removeMetrics(int index) {
                if (metricsBuilder_ == null) {
                    ensureMetricsIsMutable();
                    metrics_.remove(index);
                    onChanged();
                } else {
                    metricsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Metric.Builder getMetricsBuilder(
                int index) {
                return getMetricsFieldBuilder().getBuilder(index);
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            @Override
            public MetricOrBuilder getMetricsOrBuilder(
                int index) {
                if (metricsBuilder_ == null) {
                    return metrics_.get(index);  } else {
                    return metricsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            @Override
            public java.util.List<? extends MetricOrBuilder>
            getMetricsOrBuilderList() {
                if (metricsBuilder_ != null) {
                    return metricsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(metrics_);
                }
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Metric.Builder addMetricsBuilder() {
                return getMetricsFieldBuilder().addBuilder(
                    Metric.getDefaultInstance());
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public Metric.Builder addMetricsBuilder(
                int index) {
                return getMetricsFieldBuilder().addBuilder(
                    index, Metric.getDefaultInstance());
            }
            /**
             * <code>repeated .seldon.protos.Metric metrics = 5;</code>
             */
            public java.util.List<Metric.Builder>
            getMetricsBuilderList() {
                return getMetricsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                Metric, Metric.Builder, MetricOrBuilder>
            getMetricsFieldBuilder() {
                if (metricsBuilder_ == null) {
                    metricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                        Metric, Metric.Builder, MetricOrBuilder>(
                        metrics_,
                        ((bitField0_ & 0x00000010) == 0x00000010),
                        getParentForChildren(),
                        isClean());
                    metrics_ = null;
                }
                return metricsBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.Meta)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.Meta)
        private static final Meta DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new Meta();
        }

        public static Meta getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Meta>
            PARSER = new com.google.protobuf.AbstractParser<Meta>() {
            @Override
            public Meta parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new Meta(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<Meta> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<Meta> getParserForType() {
            return PARSER;
        }

        @Override
        public Meta getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface MetricOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.Metric)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional string key = 1;</code>
         */
        String getKey();
        /**
         * <code>optional string key = 1;</code>
         */
        com.google.protobuf.ByteString
        getKeyBytes();

        /**
         * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
         */
        int getTypeValue();
        /**
         * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
         */
        Metric.MetricType getType();

        /**
         * <code>optional float value = 3;</code>
         */
        float getValue();

        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */
        int getTagsCount();
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */
        boolean containsTags(
            String key);
        /**
         * Use {@link #getTagsMap()} instead.
         */
        @Deprecated
        java.util.Map<String, String>
        getTags();
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */
        java.util.Map<String, String>
        getTagsMap();
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        String getTagsOrDefault(
            String key,
            String defaultValue);
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        String getTagsOrThrow(
            String key);
    }
    /**
     * Protobuf type {@code seldon.protos.Metric}
     */
    public  static final class Metric extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.Metric)
        MetricOrBuilder {
        // Use Metric.newBuilder() to construct.
        private Metric(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Metric() {
            key_ = "";
            type_ = 0;
            value_ = 0F;
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private Metric(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            String s = input.readStringRequireUtf8();

                            key_ = s;
                            break;
                        }
                        case 16: {
                            int rawValue = input.readEnum();

                            type_ = rawValue;
                            break;
                        }
                        case 29: {

                            value_ = input.readFloat();
                            break;
                        }
                        case 34: {
                            if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                                tags_ = com.google.protobuf.MapField.newMapField(
                                    TagsDefaultEntryHolder.defaultEntry);
                                mutable_bitField0_ |= 0x00000008;
                            }
                            com.google.protobuf.MapEntry<String, String>
                                tags = input.readMessage(
                                TagsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                            tags_.getMutableMap().put(tags.getKey(), tags.getValue());
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_Metric_descriptor;
        }

        @Override
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
            switch (number) {
                case 4:
                    return internalGetTags();
                default:
                    throw new RuntimeException(
                        "Invalid map field number: " + number);
            }
        }
        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_Metric_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    Metric.class, Builder.class);
        }

        /**
         * Protobuf enum {@code seldon.protos.Metric.MetricType}
         */
        public enum MetricType
            implements com.google.protobuf.ProtocolMessageEnum {
            /**
             * <code>COUNTER = 0;</code>
             */
            COUNTER(0),
            /**
             * <code>GAUGE = 1;</code>
             */
            GAUGE(1),
            /**
             * <code>TIMER = 2;</code>
             */
            TIMER(2),
            UNRECOGNIZED(-1),
            ;

            /**
             * <code>COUNTER = 0;</code>
             */
            public static final int COUNTER_VALUE = 0;
            /**
             * <code>GAUGE = 1;</code>
             */
            public static final int GAUGE_VALUE = 1;
            /**
             * <code>TIMER = 2;</code>
             */
            public static final int TIMER_VALUE = 2;


            @Override
            public final int getNumber() {
                if (this == UNRECOGNIZED) {
                    throw new IllegalArgumentException(
                        "Can't get the number of an unknown enum value.");
                }
                return value;
            }

            /**
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @Deprecated
            public static MetricType valueOf(int value) {
                return forNumber(value);
            }

            public static MetricType forNumber(int value) {
                switch (value) {
                    case 0: return COUNTER;
                    case 1: return GAUGE;
                    case 2: return TIMER;
                    default: return null;
                }
            }

            public static com.google.protobuf.Internal.EnumLiteMap<MetricType>
            internalGetValueMap() {
                return internalValueMap;
            }
            private static final com.google.protobuf.Internal.EnumLiteMap<
                MetricType> internalValueMap =
                new com.google.protobuf.Internal.EnumLiteMap<MetricType>() {
                    @Override
                    public MetricType findValueByNumber(int number) {
                        return MetricType.forNumber(number);
                    }
                };

            @Override
            public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
                return getDescriptor().getValues().get(ordinal());
            }
            @Override
            public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
                return getDescriptor();
            }
            public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
                return Metric.getDescriptor().getEnumTypes().get(0);
            }

            private static final MetricType[] VALUES = values();

            public static MetricType valueOf(
                com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
                if (desc.getType() != getDescriptor()) {
                    throw new IllegalArgumentException(
                        "EnumValueDescriptor is not for this type.");
                }
                if (desc.getIndex() == -1) {
                    return UNRECOGNIZED;
                }
                return VALUES[desc.getIndex()];
            }

            private final int value;

            private MetricType(int value) {
                this.value = value;
            }

            // @@protoc_insertion_point(enum_scope:seldon.protos.Metric.MetricType)
        }

        private int bitField0_;
        public static final int KEY_FIELD_NUMBER = 1;
        private volatile Object key_;
        /**
         * <code>optional string key = 1;</code>
         */
        @Override
        public String getKey() {
            Object ref = key_;
            if (ref instanceof String) {
                return (String) ref;
            } else {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                String s = bs.toStringUtf8();
                key_ = s;
                return s;
            }
        }
        /**
         * <code>optional string key = 1;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getKeyBytes() {
            Object ref = key_;
            if (ref instanceof String) {
                com.google.protobuf.ByteString b =
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (String) ref);
                key_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TYPE_FIELD_NUMBER = 2;
        private int type_;
        /**
         * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
         */
        @Override
        public int getTypeValue() {
            return type_;
        }
        /**
         * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
         */
        @Override
        public MetricType getType() {
            MetricType result = MetricType.forNumber(type_);
            return result == null ? MetricType.UNRECOGNIZED : result;
        }

        public static final int VALUE_FIELD_NUMBER = 3;
        private float value_;
        /**
         * <code>optional float value = 3;</code>
         */
        @Override
        public float getValue() {
            return value_;
        }

        public static final int TAGS_FIELD_NUMBER = 4;
        private static final class TagsDefaultEntryHolder {
            static final com.google.protobuf.MapEntry<
                String, String> defaultEntry =
                com.google.protobuf.MapEntry
                    .<String, String>newDefaultInstance(
                        PredictionProtos.internal_static_seldon_protos_Metric_TagsEntry_descriptor,
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "",
                        com.google.protobuf.WireFormat.FieldType.STRING,
                        "");
        }
        private com.google.protobuf.MapField<
            String, String> tags_;
        private com.google.protobuf.MapField<String, String>
        internalGetTags() {
            if (tags_ == null) {
                return com.google.protobuf.MapField.emptyMapField(
                    TagsDefaultEntryHolder.defaultEntry);
            }
            return tags_;
        }

        @Override
        public int getTagsCount() {
            return internalGetTags().getMap().size();
        }
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        @Override
        public boolean containsTags(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            return internalGetTags().getMap().containsKey(key);
        }
        /**
         * Use {@link #getTagsMap()} instead.
         */
        @Override
        @Deprecated
        public java.util.Map<String, String> getTags() {
            return getTagsMap();
        }
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        @Override
        public java.util.Map<String, String> getTagsMap() {
            return internalGetTags().getMap();
        }
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        @Override
        public String getTagsOrDefault(
            String key,
            String defaultValue) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, String> map =
                internalGetTags().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, string&gt; tags = 4;</code>
         */

        @Override
        public String getTagsOrThrow(
            String key) {
            if (key == null) { throw new NullPointerException(); }
            java.util.Map<String, String> map =
                internalGetTags().getMap();
            if (!map.containsKey(key)) {
                throw new IllegalArgumentException();
            }
            return map.get(key);
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (!getKeyBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
            }
            if (type_ != MetricType.COUNTER.getNumber()) {
                output.writeEnum(2, type_);
            }
            if (value_ != 0F) {
                output.writeFloat(3, value_);
            }
            for (java.util.Map.Entry<String, String> entry
                : internalGetTags().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, String>
                    tags = TagsDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                output.writeMessage(4, tags);
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (!getKeyBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
            }
            if (type_ != MetricType.COUNTER.getNumber()) {
                size += com.google.protobuf.CodedOutputStream
                    .computeEnumSize(2, type_);
            }
            if (value_ != 0F) {
                size += com.google.protobuf.CodedOutputStream
                    .computeFloatSize(3, value_);
            }
            for (java.util.Map.Entry<String, String> entry
                : internalGetTags().getMap().entrySet()) {
                com.google.protobuf.MapEntry<String, String>
                    tags = TagsDefaultEntryHolder.defaultEntry.newBuilderForType()
                    .setKey(entry.getKey())
                    .setValue(entry.getValue())
                    .build();
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(4, tags);
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof Metric)) {
                return super.equals(obj);
            }
            Metric other = (Metric) obj;

            boolean result = true;
            result = result && getKey()
                .equals(other.getKey());
            result = result && type_ == other.type_;
            result = result && (
                Float.floatToIntBits(getValue())
                    == Float.floatToIntBits(
                    other.getValue()));
            result = result && internalGetTags().equals(
                other.internalGetTags());
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            hash = (37 * hash) + KEY_FIELD_NUMBER;
            hash = (53 * hash) + getKey().hashCode();
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + type_;
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + Float.floatToIntBits(
                getValue());
            if (!internalGetTags().getMap().isEmpty()) {
                hash = (37 * hash) + TAGS_FIELD_NUMBER;
                hash = (53 * hash) + internalGetTags().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static Metric parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Metric parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Metric parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Metric parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Metric parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Metric parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static Metric parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static Metric parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static Metric parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Metric parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(Metric prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.Metric}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.Metric)
            MetricOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_Metric_descriptor;
            }

            @Override
            @SuppressWarnings({"rawtypes"})
            protected com.google.protobuf.MapField internalGetMapField(
                int number) {
                switch (number) {
                    case 4:
                        return internalGetTags();
                    default:
                        throw new RuntimeException(
                            "Invalid map field number: " + number);
                }
            }
            @Override
            @SuppressWarnings({"rawtypes"})
            protected com.google.protobuf.MapField internalGetMutableMapField(
                int number) {
                switch (number) {
                    case 4:
                        return internalGetMutableTags();
                    default:
                        throw new RuntimeException(
                            "Invalid map field number: " + number);
                }
            }
            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_Metric_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        Metric.class, Builder.class);
            }

            // Construct using PredictionProtos.Metric.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                key_ = "";

                type_ = 0;

                value_ = 0F;

                internalGetMutableTags().clear();
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_Metric_descriptor;
            }

            @Override
            public Metric getDefaultInstanceForType() {
                return Metric.getDefaultInstance();
            }

            @Override
            public Metric build() {
                Metric result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public Metric buildPartial() {
                Metric result = new Metric(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                result.key_ = key_;
                result.type_ = type_;
                result.value_ = value_;
                result.tags_ = internalGetTags();
                result.tags_.makeImmutable();
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof Metric) {
                    return mergeFrom((Metric)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(Metric other) {
                if (other == Metric.getDefaultInstance()) {
                    return this;
                }
                if (!other.getKey().isEmpty()) {
                    key_ = other.key_;
                    onChanged();
                }
                if (other.type_ != 0) {
                    setTypeValue(other.getTypeValue());
                }
                if (other.getValue() != 0F) {
                    setValue(other.getValue());
                }
                internalGetMutableTags().mergeFrom(
                    other.internalGetTags());
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                Metric parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (Metric) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private Object key_ = "";
            /**
             * <code>optional string key = 1;</code>
             */
            @Override
            public String getKey() {
                Object ref = key_;
                if (!(ref instanceof String)) {
                    com.google.protobuf.ByteString bs =
                        (com.google.protobuf.ByteString) ref;
                    String s = bs.toStringUtf8();
                    key_ = s;
                    return s;
                } else {
                    return (String) ref;
                }
            }
            /**
             * <code>optional string key = 1;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getKeyBytes() {
                Object ref = key_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                            (String) ref);
                    key_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>optional string key = 1;</code>
             */
            public Builder setKey(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                key_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional string key = 1;</code>
             */
            public Builder clearKey() {

                key_ = getDefaultInstance().getKey();
                onChanged();
                return this;
            }
            /**
             * <code>optional string key = 1;</code>
             */
            public Builder setKeyBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                key_ = value;
                onChanged();
                return this;
            }

            private int type_ = 0;
            /**
             * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
             */
            @Override
            public int getTypeValue() {
                return type_;
            }
            /**
             * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
             */
            public Builder setTypeValue(int value) {
                type_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
             */
            @Override
            public MetricType getType() {
                MetricType result = MetricType.forNumber(type_);
                return result == null ? MetricType.UNRECOGNIZED : result;
            }
            /**
             * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
             */
            public Builder setType(MetricType value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                type_ = value.getNumber();
                onChanged();
                return this;
            }
            /**
             * <code>optional .seldon.protos.Metric.MetricType type = 2;</code>
             */
            public Builder clearType() {

                type_ = 0;
                onChanged();
                return this;
            }

            private float value_ ;
            /**
             * <code>optional float value = 3;</code>
             */
            @Override
            public float getValue() {
                return value_;
            }
            /**
             * <code>optional float value = 3;</code>
             */
            public Builder setValue(float value) {

                value_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional float value = 3;</code>
             */
            public Builder clearValue() {

                value_ = 0F;
                onChanged();
                return this;
            }

            private com.google.protobuf.MapField<
                String, String> tags_;
            private com.google.protobuf.MapField<String, String>
            internalGetTags() {
                if (tags_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(
                        TagsDefaultEntryHolder.defaultEntry);
                }
                return tags_;
            }
            private com.google.protobuf.MapField<String, String>
            internalGetMutableTags() {
                onChanged();;
                if (tags_ == null) {
                    tags_ = com.google.protobuf.MapField.newMapField(
                        TagsDefaultEntryHolder.defaultEntry);
                }
                if (!tags_.isMutable()) {
                    tags_ = tags_.copy();
                }
                return tags_;
            }

            @Override
            public int getTagsCount() {
                return internalGetTags().getMap().size();
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            @Override
            public boolean containsTags(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                return internalGetTags().getMap().containsKey(key);
            }
            /**
             * Use {@link #getTagsMap()} instead.
             */
            @Override
            @Deprecated
            public java.util.Map<String, String> getTags() {
                return getTagsMap();
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            @Override
            public java.util.Map<String, String> getTagsMap() {
                return internalGetTags().getMap();
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            @Override
            public String getTagsOrDefault(
                String key,
                String defaultValue) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, String> map =
                    internalGetTags().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            @Override
            public String getTagsOrThrow(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                java.util.Map<String, String> map =
                    internalGetTags().getMap();
                if (!map.containsKey(key)) {
                    throw new IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearTags() {
                getMutableTags().clear();
                return this;
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            public Builder removeTags(
                String key) {
                if (key == null) { throw new NullPointerException(); }
                getMutableTags().remove(key);
                return this;
            }
            /**
             * Use alternate mutation accessors instead.
             */
            @Deprecated
            public java.util.Map<String, String>
            getMutableTags() {
                return internalGetMutableTags().getMutableMap();
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */
            public Builder putTags(
                String key,
                String value) {
                if (key == null) { throw new NullPointerException(); }
                if (value == null) { throw new NullPointerException(); }
                getMutableTags().put(key, value);
                return this;
            }
            /**
             * <code>map&lt;string, string&gt; tags = 4;</code>
             */

            public Builder putAllTags(
                java.util.Map<String, String> values) {
                getMutableTags().putAll(values);
                return this;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.Metric)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.Metric)
        private static final Metric DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new Metric();
        }

        public static Metric getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Metric>
            PARSER = new com.google.protobuf.AbstractParser<Metric>() {
            @Override
            public Metric parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new Metric(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<Metric> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<Metric> getParserForType() {
            return PARSER;
        }

        @Override
        public Metric getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface SeldonMessageListOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.SeldonMessageList)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        java.util.List<SeldonMessage>
        getSeldonMessagesList();
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        SeldonMessage getSeldonMessages(int index);
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        int getSeldonMessagesCount();
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        java.util.List<? extends SeldonMessageOrBuilder>
        getSeldonMessagesOrBuilderList();
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        SeldonMessageOrBuilder getSeldonMessagesOrBuilder(
            int index);
    }
    /**
     * Protobuf type {@code seldon.protos.SeldonMessageList}
     */
    public  static final class SeldonMessageList extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.SeldonMessageList)
        SeldonMessageListOrBuilder {
        // Use SeldonMessageList.newBuilder() to construct.
        private SeldonMessageList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private SeldonMessageList() {
            seldonMessages_ = java.util.Collections.emptyList();
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private SeldonMessageList(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                                seldonMessages_ = new java.util.ArrayList<SeldonMessage>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            seldonMessages_.add(
                                input.readMessage(SeldonMessage.parser(), extensionRegistry));
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    seldonMessages_ = java.util.Collections.unmodifiableList(seldonMessages_);
                }
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_SeldonMessageList_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_SeldonMessageList_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    SeldonMessageList.class, Builder.class);
        }

        public static final int SELDONMESSAGES_FIELD_NUMBER = 1;
        private java.util.List<SeldonMessage> seldonMessages_;
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        @Override
        public java.util.List<SeldonMessage> getSeldonMessagesList() {
            return seldonMessages_;
        }
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        @Override
        public java.util.List<? extends SeldonMessageOrBuilder>
        getSeldonMessagesOrBuilderList() {
            return seldonMessages_;
        }
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        @Override
        public int getSeldonMessagesCount() {
            return seldonMessages_.size();
        }
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        @Override
        public SeldonMessage getSeldonMessages(int index) {
            return seldonMessages_.get(index);
        }
        /**
         * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
         */
        @Override
        public SeldonMessageOrBuilder getSeldonMessagesOrBuilder(
            int index) {
            return seldonMessages_.get(index);
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            for (int i = 0; i < seldonMessages_.size(); i++) {
                output.writeMessage(1, seldonMessages_.get(i));
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            for (int i = 0; i < seldonMessages_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(1, seldonMessages_.get(i));
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof SeldonMessageList)) {
                return super.equals(obj);
            }
            SeldonMessageList other = (SeldonMessageList) obj;

            boolean result = true;
            result = result && getSeldonMessagesList()
                .equals(other.getSeldonMessagesList());
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (getSeldonMessagesCount() > 0) {
                hash = (37 * hash) + SELDONMESSAGES_FIELD_NUMBER;
                hash = (53 * hash) + getSeldonMessagesList().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static SeldonMessageList parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static SeldonMessageList parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static SeldonMessageList parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static SeldonMessageList parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static SeldonMessageList parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static SeldonMessageList parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static SeldonMessageList parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static SeldonMessageList parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static SeldonMessageList parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static SeldonMessageList parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(SeldonMessageList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.SeldonMessageList}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.SeldonMessageList)
            SeldonMessageListOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessageList_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessageList_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        SeldonMessageList.class, Builder.class);
            }

            // Construct using PredictionProtos.SeldonMessageList.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                    getSeldonMessagesFieldBuilder();
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                if (seldonMessagesBuilder_ == null) {
                    seldonMessages_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                    seldonMessagesBuilder_.clear();
                }
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_SeldonMessageList_descriptor;
            }

            @Override
            public SeldonMessageList getDefaultInstanceForType() {
                return SeldonMessageList.getDefaultInstance();
            }

            @Override
            public SeldonMessageList build() {
                SeldonMessageList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public SeldonMessageList buildPartial() {
                SeldonMessageList result = new SeldonMessageList(this);
                int from_bitField0_ = bitField0_;
                if (seldonMessagesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) == 0x00000001)) {
                        seldonMessages_ = java.util.Collections.unmodifiableList(seldonMessages_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.seldonMessages_ = seldonMessages_;
                } else {
                    result.seldonMessages_ = seldonMessagesBuilder_.build();
                }
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof SeldonMessageList) {
                    return mergeFrom((SeldonMessageList)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(SeldonMessageList other) {
                if (other == SeldonMessageList.getDefaultInstance()) {
                    return this;
                }
                if (seldonMessagesBuilder_ == null) {
                    if (!other.seldonMessages_.isEmpty()) {
                        if (seldonMessages_.isEmpty()) {
                            seldonMessages_ = other.seldonMessages_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureSeldonMessagesIsMutable();
                            seldonMessages_.addAll(other.seldonMessages_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.seldonMessages_.isEmpty()) {
                        if (seldonMessagesBuilder_.isEmpty()) {
                            seldonMessagesBuilder_.dispose();
                            seldonMessagesBuilder_ = null;
                            seldonMessages_ = other.seldonMessages_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            seldonMessagesBuilder_ =
                                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                    getSeldonMessagesFieldBuilder() : null;
                        } else {
                            seldonMessagesBuilder_.addAllMessages(other.seldonMessages_);
                        }
                    }
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                SeldonMessageList parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (SeldonMessageList) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }
            private int bitField0_;

            private java.util.List<SeldonMessage> seldonMessages_ =
                java.util.Collections.emptyList();
            private void ensureSeldonMessagesIsMutable() {
                if (!((bitField0_ & 0x00000001) == 0x00000001)) {
                    seldonMessages_ = new java.util.ArrayList<SeldonMessage>(seldonMessages_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> seldonMessagesBuilder_;

            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            @Override
            public java.util.List<SeldonMessage> getSeldonMessagesList() {
                if (seldonMessagesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(seldonMessages_);
                } else {
                    return seldonMessagesBuilder_.getMessageList();
                }
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            @Override
            public int getSeldonMessagesCount() {
                if (seldonMessagesBuilder_ == null) {
                    return seldonMessages_.size();
                } else {
                    return seldonMessagesBuilder_.getCount();
                }
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            @Override
            public SeldonMessage getSeldonMessages(int index) {
                if (seldonMessagesBuilder_ == null) {
                    return seldonMessages_.get(index);
                } else {
                    return seldonMessagesBuilder_.getMessage(index);
                }
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder setSeldonMessages(
                int index, SeldonMessage value) {
                if (seldonMessagesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.set(index, value);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder setSeldonMessages(
                int index, SeldonMessage.Builder builderForValue) {
                if (seldonMessagesBuilder_ == null) {
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    seldonMessagesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder addSeldonMessages(SeldonMessage value) {
                if (seldonMessagesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.add(value);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder addSeldonMessages(
                int index, SeldonMessage value) {
                if (seldonMessagesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.add(index, value);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder addSeldonMessages(
                SeldonMessage.Builder builderForValue) {
                if (seldonMessagesBuilder_ == null) {
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.add(builderForValue.build());
                    onChanged();
                } else {
                    seldonMessagesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder addSeldonMessages(
                int index, SeldonMessage.Builder builderForValue) {
                if (seldonMessagesBuilder_ == null) {
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    seldonMessagesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder addAllSeldonMessages(
                Iterable<? extends SeldonMessage> values) {
                if (seldonMessagesBuilder_ == null) {
                    ensureSeldonMessagesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                        values, seldonMessages_);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder clearSeldonMessages() {
                if (seldonMessagesBuilder_ == null) {
                    seldonMessages_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public Builder removeSeldonMessages(int index) {
                if (seldonMessagesBuilder_ == null) {
                    ensureSeldonMessagesIsMutable();
                    seldonMessages_.remove(index);
                    onChanged();
                } else {
                    seldonMessagesBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public SeldonMessage.Builder getSeldonMessagesBuilder(
                int index) {
                return getSeldonMessagesFieldBuilder().getBuilder(index);
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            @Override
            public SeldonMessageOrBuilder getSeldonMessagesOrBuilder(
                int index) {
                if (seldonMessagesBuilder_ == null) {
                    return seldonMessages_.get(index);  } else {
                    return seldonMessagesBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            @Override
            public java.util.List<? extends SeldonMessageOrBuilder>
            getSeldonMessagesOrBuilderList() {
                if (seldonMessagesBuilder_ != null) {
                    return seldonMessagesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(seldonMessages_);
                }
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public SeldonMessage.Builder addSeldonMessagesBuilder() {
                return getSeldonMessagesFieldBuilder().addBuilder(
                    SeldonMessage.getDefaultInstance());
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public SeldonMessage.Builder addSeldonMessagesBuilder(
                int index) {
                return getSeldonMessagesFieldBuilder().addBuilder(
                    index, SeldonMessage.getDefaultInstance());
            }
            /**
             * <code>repeated .seldon.protos.SeldonMessage seldonMessages = 1;</code>
             */
            public java.util.List<SeldonMessage.Builder>
            getSeldonMessagesBuilderList() {
                return getSeldonMessagesFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getSeldonMessagesFieldBuilder() {
                if (seldonMessagesBuilder_ == null) {
                    seldonMessagesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        seldonMessages_,
                        ((bitField0_ & 0x00000001) == 0x00000001),
                        getParentForChildren(),
                        isClean());
                    seldonMessages_ = null;
                }
                return seldonMessagesBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.SeldonMessageList)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.SeldonMessageList)
        private static final SeldonMessageList DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new SeldonMessageList();
        }

        public static SeldonMessageList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SeldonMessageList>
            PARSER = new com.google.protobuf.AbstractParser<SeldonMessageList>() {
            @Override
            public SeldonMessageList parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new SeldonMessageList(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<SeldonMessageList> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<SeldonMessageList> getParserForType() {
            return PARSER;
        }

        @Override
        public SeldonMessageList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface StatusOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.Status)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional int32 code = 1;</code>
         */
        int getCode();

        /**
         * <code>optional string info = 2;</code>
         */
        String getInfo();
        /**
         * <code>optional string info = 2;</code>
         */
        com.google.protobuf.ByteString
        getInfoBytes();

        /**
         * <code>optional string reason = 3;</code>
         */
        String getReason();
        /**
         * <code>optional string reason = 3;</code>
         */
        com.google.protobuf.ByteString
        getReasonBytes();

        /**
         * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
         */
        int getStatusValue();
        /**
         * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
         */
        Status.StatusFlag getStatus();
    }
    /**
     * Protobuf type {@code seldon.protos.Status}
     */
    public  static final class Status extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.Status)
        StatusOrBuilder {
        // Use Status.newBuilder() to construct.
        private Status(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Status() {
            code_ = 0;
            info_ = "";
            reason_ = "";
            status_ = 0;
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private Status(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 8: {

                            code_ = input.readInt32();
                            break;
                        }
                        case 18: {
                            String s = input.readStringRequireUtf8();

                            info_ = s;
                            break;
                        }
                        case 26: {
                            String s = input.readStringRequireUtf8();

                            reason_ = s;
                            break;
                        }
                        case 32: {
                            int rawValue = input.readEnum();

                            status_ = rawValue;
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_Status_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_Status_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    Status.class, Builder.class);
        }

        /**
         * Protobuf enum {@code seldon.protos.Status.StatusFlag}
         */
        public enum StatusFlag
            implements com.google.protobuf.ProtocolMessageEnum {
            /**
             * <code>SUCCESS = 0;</code>
             */
            SUCCESS(0),
            /**
             * <code>FAILURE = 1;</code>
             */
            FAILURE(1),
            UNRECOGNIZED(-1),
            ;

            /**
             * <code>SUCCESS = 0;</code>
             */
            public static final int SUCCESS_VALUE = 0;
            /**
             * <code>FAILURE = 1;</code>
             */
            public static final int FAILURE_VALUE = 1;


            @Override
            public final int getNumber() {
                if (this == UNRECOGNIZED) {
                    throw new IllegalArgumentException(
                        "Can't get the number of an unknown enum value.");
                }
                return value;
            }

            /**
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @Deprecated
            public static StatusFlag valueOf(int value) {
                return forNumber(value);
            }

            public static StatusFlag forNumber(int value) {
                switch (value) {
                    case 0: return SUCCESS;
                    case 1: return FAILURE;
                    default: return null;
                }
            }

            public static com.google.protobuf.Internal.EnumLiteMap<StatusFlag>
            internalGetValueMap() {
                return internalValueMap;
            }
            private static final com.google.protobuf.Internal.EnumLiteMap<
                StatusFlag> internalValueMap =
                new com.google.protobuf.Internal.EnumLiteMap<StatusFlag>() {
                    @Override
                    public StatusFlag findValueByNumber(int number) {
                        return StatusFlag.forNumber(number);
                    }
                };

            @Override
            public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
                return getDescriptor().getValues().get(ordinal());
            }
            @Override
            public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
                return getDescriptor();
            }
            public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
                return Status.getDescriptor().getEnumTypes().get(0);
            }

            private static final StatusFlag[] VALUES = values();

            public static StatusFlag valueOf(
                com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
                if (desc.getType() != getDescriptor()) {
                    throw new IllegalArgumentException(
                        "EnumValueDescriptor is not for this type.");
                }
                if (desc.getIndex() == -1) {
                    return UNRECOGNIZED;
                }
                return VALUES[desc.getIndex()];
            }

            private final int value;

            private StatusFlag(int value) {
                this.value = value;
            }

            // @@protoc_insertion_point(enum_scope:seldon.protos.Status.StatusFlag)
        }

        public static final int CODE_FIELD_NUMBER = 1;
        private int code_;
        /**
         * <code>optional int32 code = 1;</code>
         */
        @Override
        public int getCode() {
            return code_;
        }

        public static final int INFO_FIELD_NUMBER = 2;
        private volatile Object info_;
        /**
         * <code>optional string info = 2;</code>
         */
        @Override
        public String getInfo() {
            Object ref = info_;
            if (ref instanceof String) {
                return (String) ref;
            } else {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                String s = bs.toStringUtf8();
                info_ = s;
                return s;
            }
        }
        /**
         * <code>optional string info = 2;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getInfoBytes() {
            Object ref = info_;
            if (ref instanceof String) {
                com.google.protobuf.ByteString b =
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (String) ref);
                info_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int REASON_FIELD_NUMBER = 3;
        private volatile Object reason_;
        /**
         * <code>optional string reason = 3;</code>
         */
        @Override
        public String getReason() {
            Object ref = reason_;
            if (ref instanceof String) {
                return (String) ref;
            } else {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                String s = bs.toStringUtf8();
                reason_ = s;
                return s;
            }
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        @Override
        public com.google.protobuf.ByteString
        getReasonBytes() {
            Object ref = reason_;
            if (ref instanceof String) {
                com.google.protobuf.ByteString b =
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (String) ref);
                reason_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int STATUS_FIELD_NUMBER = 4;
        private int status_;
        /**
         * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
         */
        @Override
        public int getStatusValue() {
            return status_;
        }
        /**
         * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
         */
        @Override
        public StatusFlag getStatus() {
            StatusFlag result = StatusFlag.forNumber(status_);
            return result == null ? StatusFlag.UNRECOGNIZED : result;
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (code_ != 0) {
                output.writeInt32(1, code_);
            }
            if (!getInfoBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, info_);
            }
            if (!getReasonBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, reason_);
            }
            if (status_ != StatusFlag.SUCCESS.getNumber()) {
                output.writeEnum(4, status_);
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (code_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                    .computeInt32Size(1, code_);
            }
            if (!getInfoBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, info_);
            }
            if (!getReasonBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, reason_);
            }
            if (status_ != StatusFlag.SUCCESS.getNumber()) {
                size += com.google.protobuf.CodedOutputStream
                    .computeEnumSize(4, status_);
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof Status)) {
                return super.equals(obj);
            }
            Status other = (Status) obj;

            boolean result = true;
            result = result && (getCode()
                == other.getCode());
            result = result && getInfo()
                .equals(other.getInfo());
            result = result && getReason()
                .equals(other.getReason());
            result = result && status_ == other.status_;
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            hash = (37 * hash) + CODE_FIELD_NUMBER;
            hash = (53 * hash) + getCode();
            hash = (37 * hash) + INFO_FIELD_NUMBER;
            hash = (53 * hash) + getInfo().hashCode();
            hash = (37 * hash) + REASON_FIELD_NUMBER;
            hash = (53 * hash) + getReason().hashCode();
            hash = (37 * hash) + STATUS_FIELD_NUMBER;
            hash = (53 * hash) + status_;
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static Status parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Status parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Status parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Status parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Status parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Status parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static Status parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static Status parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static Status parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Status parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(Status prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.Status}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.Status)
            StatusOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_Status_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_Status_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        Status.class, Builder.class);
            }

            // Construct using PredictionProtos.Status.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                code_ = 0;

                info_ = "";

                reason_ = "";

                status_ = 0;

                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_Status_descriptor;
            }

            @Override
            public Status getDefaultInstanceForType() {
                return Status.getDefaultInstance();
            }

            @Override
            public Status build() {
                Status result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public Status buildPartial() {
                Status result = new Status(this);
                result.code_ = code_;
                result.info_ = info_;
                result.reason_ = reason_;
                result.status_ = status_;
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof Status) {
                    return mergeFrom((Status)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(Status other) {
                if (other == Status.getDefaultInstance()) {
                    return this;
                }
                if (other.getCode() != 0) {
                    setCode(other.getCode());
                }
                if (!other.getInfo().isEmpty()) {
                    info_ = other.info_;
                    onChanged();
                }
                if (!other.getReason().isEmpty()) {
                    reason_ = other.reason_;
                    onChanged();
                }
                if (other.status_ != 0) {
                    setStatusValue(other.getStatusValue());
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                Status parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (Status) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private int code_ ;
            /**
             * <code>optional int32 code = 1;</code>
             */
            @Override
            public int getCode() {
                return code_;
            }
            /**
             * <code>optional int32 code = 1;</code>
             */
            public Builder setCode(int value) {

                code_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional int32 code = 1;</code>
             */
            public Builder clearCode() {

                code_ = 0;
                onChanged();
                return this;
            }

            private Object info_ = "";
            /**
             * <code>optional string info = 2;</code>
             */
            @Override
            public String getInfo() {
                Object ref = info_;
                if (!(ref instanceof String)) {
                    com.google.protobuf.ByteString bs =
                        (com.google.protobuf.ByteString) ref;
                    String s = bs.toStringUtf8();
                    info_ = s;
                    return s;
                } else {
                    return (String) ref;
                }
            }
            /**
             * <code>optional string info = 2;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getInfoBytes() {
                Object ref = info_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                            (String) ref);
                    info_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>optional string info = 2;</code>
             */
            public Builder setInfo(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                info_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional string info = 2;</code>
             */
            public Builder clearInfo() {

                info_ = getDefaultInstance().getInfo();
                onChanged();
                return this;
            }
            /**
             * <code>optional string info = 2;</code>
             */
            public Builder setInfoBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                info_ = value;
                onChanged();
                return this;
            }

            private Object reason_ = "";
            /**
             * <code>optional string reason = 3;</code>
             */
            @Override
            public String getReason() {
                Object ref = reason_;
                if (!(ref instanceof String)) {
                    com.google.protobuf.ByteString bs =
                        (com.google.protobuf.ByteString) ref;
                    String s = bs.toStringUtf8();
                    reason_ = s;
                    return s;
                } else {
                    return (String) ref;
                }
            }
            /**
             * <code>optional string reason = 3;</code>
             */
            @Override
            public com.google.protobuf.ByteString
            getReasonBytes() {
                Object ref = reason_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                            (String) ref);
                    reason_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>optional string reason = 3;</code>
             */
            public Builder setReason(
                String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                reason_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional string reason = 3;</code>
             */
            public Builder clearReason() {

                reason_ = getDefaultInstance().getReason();
                onChanged();
                return this;
            }
            /**
             * <code>optional string reason = 3;</code>
             */
            public Builder setReasonBytes(
                com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                reason_ = value;
                onChanged();
                return this;
            }

            private int status_ = 0;
            /**
             * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
             */
            @Override
            public int getStatusValue() {
                return status_;
            }
            /**
             * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
             */
            public Builder setStatusValue(int value) {
                status_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
             */
            @Override
            public StatusFlag getStatus() {
                StatusFlag result = StatusFlag.forNumber(status_);
                return result == null ? StatusFlag.UNRECOGNIZED : result;
            }
            /**
             * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
             */
            public Builder setStatus(StatusFlag value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                status_ = value.getNumber();
                onChanged();
                return this;
            }
            /**
             * <code>optional .seldon.protos.Status.StatusFlag status = 4;</code>
             */
            public Builder clearStatus() {

                status_ = 0;
                onChanged();
                return this;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.Status)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.Status)
        private static final Status DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new Status();
        }

        public static Status getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Status>
            PARSER = new com.google.protobuf.AbstractParser<Status>() {
            @Override
            public Status parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new Status(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<Status> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<Status> getParserForType() {
            return PARSER;
        }

        @Override
        public Status getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface FeedbackOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.Feedback)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        boolean hasRequest();
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        SeldonMessage getRequest();
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        SeldonMessageOrBuilder getRequestOrBuilder();

        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        boolean hasResponse();
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        SeldonMessage getResponse();
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        SeldonMessageOrBuilder getResponseOrBuilder();

        /**
         * <code>optional float reward = 3;</code>
         */
        float getReward();

        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        boolean hasTruth();
        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        SeldonMessage getTruth();
        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        SeldonMessageOrBuilder getTruthOrBuilder();
    }
    /**
     * Protobuf type {@code seldon.protos.Feedback}
     */
    public  static final class Feedback extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.Feedback)
        FeedbackOrBuilder {
        // Use Feedback.newBuilder() to construct.
        private Feedback(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Feedback() {
            reward_ = 0F;
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private Feedback(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            SeldonMessage.Builder subBuilder = null;
                            if (request_ != null) {
                                subBuilder = request_.toBuilder();
                            }
                            request_ = input.readMessage(SeldonMessage.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(request_);
                                request_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 18: {
                            SeldonMessage.Builder subBuilder = null;
                            if (response_ != null) {
                                subBuilder = response_.toBuilder();
                            }
                            response_ = input.readMessage(SeldonMessage.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(response_);
                                response_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 29: {

                            reward_ = input.readFloat();
                            break;
                        }
                        case 34: {
                            SeldonMessage.Builder subBuilder = null;
                            if (truth_ != null) {
                                subBuilder = truth_.toBuilder();
                            }
                            truth_ = input.readMessage(SeldonMessage.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(truth_);
                                truth_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_Feedback_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_Feedback_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    Feedback.class, Builder.class);
        }

        public static final int REQUEST_FIELD_NUMBER = 1;
        private SeldonMessage request_;
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public boolean hasRequest() {
            return request_ != null;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public SeldonMessage getRequest() {
            return request_ == null ? SeldonMessage.getDefaultInstance() : request_;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public SeldonMessageOrBuilder getRequestOrBuilder() {
            return getRequest();
        }

        public static final int RESPONSE_FIELD_NUMBER = 2;
        private SeldonMessage response_;
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public boolean hasResponse() {
            return response_ != null;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public SeldonMessage getResponse() {
            return response_ == null ? SeldonMessage.getDefaultInstance() : response_;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public SeldonMessageOrBuilder getResponseOrBuilder() {
            return getResponse();
        }

        public static final int REWARD_FIELD_NUMBER = 3;
        private float reward_;
        /**
         * <code>optional float reward = 3;</code>
         */
        @Override
        public float getReward() {
            return reward_;
        }

        public static final int TRUTH_FIELD_NUMBER = 4;
        private SeldonMessage truth_;
        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        @Override
        public boolean hasTruth() {
            return truth_ != null;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        @Override
        public SeldonMessage getTruth() {
            return truth_ == null ? SeldonMessage.getDefaultInstance() : truth_;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
         */
        @Override
        public SeldonMessageOrBuilder getTruthOrBuilder() {
            return getTruth();
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (request_ != null) {
                output.writeMessage(1, getRequest());
            }
            if (response_ != null) {
                output.writeMessage(2, getResponse());
            }
            if (reward_ != 0F) {
                output.writeFloat(3, reward_);
            }
            if (truth_ != null) {
                output.writeMessage(4, getTruth());
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (request_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(1, getRequest());
            }
            if (response_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(2, getResponse());
            }
            if (reward_ != 0F) {
                size += com.google.protobuf.CodedOutputStream
                    .computeFloatSize(3, reward_);
            }
            if (truth_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(4, getTruth());
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof Feedback)) {
                return super.equals(obj);
            }
            Feedback other = (Feedback) obj;

            boolean result = true;
            result = result && (hasRequest() == other.hasRequest());
            if (hasRequest()) {
                result = result && getRequest()
                    .equals(other.getRequest());
            }
            result = result && (hasResponse() == other.hasResponse());
            if (hasResponse()) {
                result = result && getResponse()
                    .equals(other.getResponse());
            }
            result = result && (
                Float.floatToIntBits(getReward())
                    == Float.floatToIntBits(
                    other.getReward()));
            result = result && (hasTruth() == other.hasTruth());
            if (hasTruth()) {
                result = result && getTruth()
                    .equals(other.getTruth());
            }
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (hasRequest()) {
                hash = (37 * hash) + REQUEST_FIELD_NUMBER;
                hash = (53 * hash) + getRequest().hashCode();
            }
            if (hasResponse()) {
                hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
                hash = (53 * hash) + getResponse().hashCode();
            }
            hash = (37 * hash) + REWARD_FIELD_NUMBER;
            hash = (53 * hash) + Float.floatToIntBits(
                getReward());
            if (hasTruth()) {
                hash = (37 * hash) + TRUTH_FIELD_NUMBER;
                hash = (53 * hash) + getTruth().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static Feedback parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Feedback parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Feedback parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static Feedback parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static Feedback parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Feedback parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static Feedback parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static Feedback parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static Feedback parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static Feedback parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(Feedback prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.Feedback}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.Feedback)
            FeedbackOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_Feedback_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_Feedback_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        Feedback.class, Builder.class);
            }

            // Construct using PredictionProtos.Feedback.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                if (requestBuilder_ == null) {
                    request_ = null;
                } else {
                    request_ = null;
                    requestBuilder_ = null;
                }
                if (responseBuilder_ == null) {
                    response_ = null;
                } else {
                    response_ = null;
                    responseBuilder_ = null;
                }
                reward_ = 0F;

                if (truthBuilder_ == null) {
                    truth_ = null;
                } else {
                    truth_ = null;
                    truthBuilder_ = null;
                }
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_Feedback_descriptor;
            }

            @Override
            public Feedback getDefaultInstanceForType() {
                return Feedback.getDefaultInstance();
            }

            @Override
            public Feedback build() {
                Feedback result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public Feedback buildPartial() {
                Feedback result = new Feedback(this);
                if (requestBuilder_ == null) {
                    result.request_ = request_;
                } else {
                    result.request_ = requestBuilder_.build();
                }
                if (responseBuilder_ == null) {
                    result.response_ = response_;
                } else {
                    result.response_ = responseBuilder_.build();
                }
                result.reward_ = reward_;
                if (truthBuilder_ == null) {
                    result.truth_ = truth_;
                } else {
                    result.truth_ = truthBuilder_.build();
                }
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof Feedback) {
                    return mergeFrom((Feedback)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(Feedback other) {
                if (other == Feedback.getDefaultInstance()) {
                    return this;
                }
                if (other.hasRequest()) {
                    mergeRequest(other.getRequest());
                }
                if (other.hasResponse()) {
                    mergeResponse(other.getResponse());
                }
                if (other.getReward() != 0F) {
                    setReward(other.getReward());
                }
                if (other.hasTruth()) {
                    mergeTruth(other.getTruth());
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                Feedback parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (Feedback) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private SeldonMessage request_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> requestBuilder_;
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public boolean hasRequest() {
                return requestBuilder_ != null || request_ != null;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public SeldonMessage getRequest() {
                if (requestBuilder_ == null) {
                    return request_ == null ? SeldonMessage.getDefaultInstance() : request_;
                } else {
                    return requestBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder setRequest(SeldonMessage value) {
                if (requestBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    request_ = value;
                    onChanged();
                } else {
                    requestBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder setRequest(
                SeldonMessage.Builder builderForValue) {
                if (requestBuilder_ == null) {
                    request_ = builderForValue.build();
                    onChanged();
                } else {
                    requestBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder mergeRequest(SeldonMessage value) {
                if (requestBuilder_ == null) {
                    if (request_ != null) {
                        request_ =
                            SeldonMessage.newBuilder(request_).mergeFrom(value).buildPartial();
                    } else {
                        request_ = value;
                    }
                    onChanged();
                } else {
                    requestBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder clearRequest() {
                if (requestBuilder_ == null) {
                    request_ = null;
                    onChanged();
                } else {
                    request_ = null;
                    requestBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public SeldonMessage.Builder getRequestBuilder() {

                onChanged();
                return getRequestFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public SeldonMessageOrBuilder getRequestOrBuilder() {
                if (requestBuilder_ != null) {
                    return requestBuilder_.getMessageOrBuilder();
                } else {
                    return request_ == null ?
                        SeldonMessage.getDefaultInstance() : request_;
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getRequestFieldBuilder() {
                if (requestBuilder_ == null) {
                    requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        getRequest(),
                        getParentForChildren(),
                        isClean());
                    request_ = null;
                }
                return requestBuilder_;
            }

            private SeldonMessage response_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> responseBuilder_;
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public boolean hasResponse() {
                return responseBuilder_ != null || response_ != null;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public SeldonMessage getResponse() {
                if (responseBuilder_ == null) {
                    return response_ == null ? SeldonMessage.getDefaultInstance() : response_;
                } else {
                    return responseBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder setResponse(SeldonMessage value) {
                if (responseBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    response_ = value;
                    onChanged();
                } else {
                    responseBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder setResponse(
                SeldonMessage.Builder builderForValue) {
                if (responseBuilder_ == null) {
                    response_ = builderForValue.build();
                    onChanged();
                } else {
                    responseBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder mergeResponse(SeldonMessage value) {
                if (responseBuilder_ == null) {
                    if (response_ != null) {
                        response_ =
                            SeldonMessage.newBuilder(response_).mergeFrom(value).buildPartial();
                    } else {
                        response_ = value;
                    }
                    onChanged();
                } else {
                    responseBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder clearResponse() {
                if (responseBuilder_ == null) {
                    response_ = null;
                    onChanged();
                } else {
                    response_ = null;
                    responseBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public SeldonMessage.Builder getResponseBuilder() {

                onChanged();
                return getResponseFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public SeldonMessageOrBuilder getResponseOrBuilder() {
                if (responseBuilder_ != null) {
                    return responseBuilder_.getMessageOrBuilder();
                } else {
                    return response_ == null ?
                        SeldonMessage.getDefaultInstance() : response_;
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getResponseFieldBuilder() {
                if (responseBuilder_ == null) {
                    responseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        getResponse(),
                        getParentForChildren(),
                        isClean());
                    response_ = null;
                }
                return responseBuilder_;
            }

            private float reward_ ;
            /**
             * <code>optional float reward = 3;</code>
             */
            @Override
            public float getReward() {
                return reward_;
            }
            /**
             * <code>optional float reward = 3;</code>
             */
            public Builder setReward(float value) {

                reward_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>optional float reward = 3;</code>
             */
            public Builder clearReward() {

                reward_ = 0F;
                onChanged();
                return this;
            }

            private SeldonMessage truth_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> truthBuilder_;
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            @Override
            public boolean hasTruth() {
                return truthBuilder_ != null || truth_ != null;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            @Override
            public SeldonMessage getTruth() {
                if (truthBuilder_ == null) {
                    return truth_ == null ? SeldonMessage.getDefaultInstance() : truth_;
                } else {
                    return truthBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            public Builder setTruth(SeldonMessage value) {
                if (truthBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    truth_ = value;
                    onChanged();
                } else {
                    truthBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            public Builder setTruth(
                SeldonMessage.Builder builderForValue) {
                if (truthBuilder_ == null) {
                    truth_ = builderForValue.build();
                    onChanged();
                } else {
                    truthBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            public Builder mergeTruth(SeldonMessage value) {
                if (truthBuilder_ == null) {
                    if (truth_ != null) {
                        truth_ =
                            SeldonMessage.newBuilder(truth_).mergeFrom(value).buildPartial();
                    } else {
                        truth_ = value;
                    }
                    onChanged();
                } else {
                    truthBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            public Builder clearTruth() {
                if (truthBuilder_ == null) {
                    truth_ = null;
                    onChanged();
                } else {
                    truth_ = null;
                    truthBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            public SeldonMessage.Builder getTruthBuilder() {

                onChanged();
                return getTruthFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            @Override
            public SeldonMessageOrBuilder getTruthOrBuilder() {
                if (truthBuilder_ != null) {
                    return truthBuilder_.getMessageOrBuilder();
                } else {
                    return truth_ == null ?
                        SeldonMessage.getDefaultInstance() : truth_;
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage truth = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getTruthFieldBuilder() {
                if (truthBuilder_ == null) {
                    truthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        getTruth(),
                        getParentForChildren(),
                        isClean());
                    truth_ = null;
                }
                return truthBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.Feedback)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.Feedback)
        private static final Feedback DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new Feedback();
        }

        public static Feedback getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Feedback>
            PARSER = new com.google.protobuf.AbstractParser<Feedback>() {
            @Override
            public Feedback parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new Feedback(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<Feedback> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<Feedback> getParserForType() {
            return PARSER;
        }

        @Override
        public Feedback getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface RequestResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:seldon.protos.RequestResponse)
        com.google.protobuf.MessageOrBuilder {

        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        boolean hasRequest();
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        SeldonMessage getRequest();
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        SeldonMessageOrBuilder getRequestOrBuilder();

        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        boolean hasResponse();
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        SeldonMessage getResponse();
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        SeldonMessageOrBuilder getResponseOrBuilder();
    }
    /**
     * Protobuf type {@code seldon.protos.RequestResponse}
     */
    public  static final class RequestResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:seldon.protos.RequestResponse)
        RequestResponseOrBuilder {
        // Use RequestResponse.newBuilder() to construct.
        private RequestResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private RequestResponse() {
        }

        @Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
        }
        private RequestResponse(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            int mutable_bitField0_ = 0;
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!input.skipField(tag)) {
                                done = true;
                            }
                            break;
                        }
                        case 10: {
                            SeldonMessage.Builder subBuilder = null;
                            if (request_ != null) {
                                subBuilder = request_.toBuilder();
                            }
                            request_ = input.readMessage(SeldonMessage.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(request_);
                                request_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 18: {
                            SeldonMessage.Builder subBuilder = null;
                            if (response_ != null) {
                                subBuilder = response_.toBuilder();
                            }
                            response_ = input.readMessage(SeldonMessage.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(response_);
                                response_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                    e).setUnfinishedMessage(this);
            } finally {
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return PredictionProtos.internal_static_seldon_protos_RequestResponse_descriptor;
        }

        @Override
        protected FieldAccessorTable
        internalGetFieldAccessorTable() {
            return PredictionProtos.internal_static_seldon_protos_RequestResponse_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    RequestResponse.class, Builder.class);
        }

        public static final int REQUEST_FIELD_NUMBER = 1;
        private SeldonMessage request_;
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public boolean hasRequest() {
            return request_ != null;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public SeldonMessage getRequest() {
            return request_ == null ? SeldonMessage.getDefaultInstance() : request_;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
         */
        @Override
        public SeldonMessageOrBuilder getRequestOrBuilder() {
            return getRequest();
        }

        public static final int RESPONSE_FIELD_NUMBER = 2;
        private SeldonMessage response_;
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public boolean hasResponse() {
            return response_ != null;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public SeldonMessage getResponse() {
            return response_ == null ? SeldonMessage.getDefaultInstance() : response_;
        }
        /**
         * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
         */
        @Override
        public SeldonMessageOrBuilder getResponseOrBuilder() {
            return getResponse();
        }

        private byte memoizedIsInitialized = -1;
        @Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) {
                return true;
            }
            if (isInitialized == 0) {
                return false;
            }

            memoizedIsInitialized = 1;
            return true;
        }

        @Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
            if (request_ != null) {
                output.writeMessage(1, getRequest());
            }
            if (response_ != null) {
                output.writeMessage(2, getResponse());
            }
        }

        @Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) {
                return size;
            }

            size = 0;
            if (request_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(1, getRequest());
            }
            if (response_ != null) {
                size += com.google.protobuf.CodedOutputStream
                    .computeMessageSize(2, getResponse());
            }
            memoizedSize = size;
            return size;
        }

        private static final long serialVersionUID = 0L;
        @Override
        public boolean equals(final Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof RequestResponse)) {
                return super.equals(obj);
            }
            RequestResponse other = (RequestResponse) obj;

            boolean result = true;
            result = result && (hasRequest() == other.hasRequest());
            if (hasRequest()) {
                result = result && getRequest()
                    .equals(other.getRequest());
            }
            result = result && (hasResponse() == other.hasResponse());
            if (hasResponse()) {
                result = result && getResponse()
                    .equals(other.getResponse());
            }
            return result;
        }

        @Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptorForType().hashCode();
            if (hasRequest()) {
                hash = (37 * hash) + REQUEST_FIELD_NUMBER;
                hash = (53 * hash) + getRequest().hashCode();
            }
            if (hasResponse()) {
                hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
                hash = (53 * hash) + getResponse().hashCode();
            }
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static RequestResponse parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RequestResponse parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RequestResponse parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RequestResponse parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RequestResponse parseFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static RequestResponse parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static RequestResponse parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
        }
        public static RequestResponse parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static RequestResponse parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
        }
        public static RequestResponse parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(RequestResponse prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE
                ? new Builder() : new Builder().mergeFrom(this);
        }

        @Override
        protected Builder newBuilderForType(
            BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }
        /**
         * Protobuf type {@code seldon.protos.RequestResponse}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:seldon.protos.RequestResponse)
            RequestResponseOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return PredictionProtos.internal_static_seldon_protos_RequestResponse_descriptor;
            }

            @Override
            protected FieldAccessorTable
            internalGetFieldAccessorTable() {
                return PredictionProtos.internal_static_seldon_protos_RequestResponse_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        RequestResponse.class, Builder.class);
            }

            // Construct using PredictionProtos.RequestResponse.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
                }
            }
            @Override
            public Builder clear() {
                super.clear();
                if (requestBuilder_ == null) {
                    request_ = null;
                } else {
                    request_ = null;
                    requestBuilder_ = null;
                }
                if (responseBuilder_ == null) {
                    response_ = null;
                } else {
                    response_ = null;
                    responseBuilder_ = null;
                }
                return this;
            }

            @Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return PredictionProtos.internal_static_seldon_protos_RequestResponse_descriptor;
            }

            @Override
            public RequestResponse getDefaultInstanceForType() {
                return RequestResponse.getDefaultInstance();
            }

            @Override
            public RequestResponse build() {
                RequestResponse result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @Override
            public RequestResponse buildPartial() {
                RequestResponse result = new RequestResponse(this);
                if (requestBuilder_ == null) {
                    result.request_ = request_;
                } else {
                    result.request_ = requestBuilder_.build();
                }
                if (responseBuilder_ == null) {
                    result.response_ = response_;
                } else {
                    result.response_ = responseBuilder_.build();
                }
                onBuilt();
                return result;
            }

            @Override
            public Builder clone() {
                return (Builder) super.clone();
            }
            @Override
            public Builder setField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.setField(field, value);
            }
            @Override
            public Builder clearField(
                com.google.protobuf.Descriptors.FieldDescriptor field) {
                return (Builder) super.clearField(field);
            }
            @Override
            public Builder clearOneof(
                com.google.protobuf.Descriptors.OneofDescriptor oneof) {
                return (Builder) super.clearOneof(oneof);
            }
            @Override
            public Builder setRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                int index, Object value) {
                return (Builder) super.setRepeatedField(field, index, value);
            }
            @Override
            public Builder addRepeatedField(
                com.google.protobuf.Descriptors.FieldDescriptor field,
                Object value) {
                return (Builder) super.addRepeatedField(field, value);
            }
            @Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof RequestResponse) {
                    return mergeFrom((RequestResponse)other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(RequestResponse other) {
                if (other == RequestResponse.getDefaultInstance()) {
                    return this;
                }
                if (other.hasRequest()) {
                    mergeRequest(other.getRequest());
                }
                if (other.hasResponse()) {
                    mergeResponse(other.getResponse());
                }
                onChanged();
                return this;
            }

            @Override
            public final boolean isInitialized() {
                return true;
            }

            @Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
                RequestResponse parsedMessage = null;
                try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (RequestResponse) e.getUnfinishedMessage();
                    throw e.unwrapIOException();
                } finally {
                    if (parsedMessage != null) {
                        mergeFrom(parsedMessage);
                    }
                }
                return this;
            }

            private SeldonMessage request_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> requestBuilder_;
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public boolean hasRequest() {
                return requestBuilder_ != null || request_ != null;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public SeldonMessage getRequest() {
                if (requestBuilder_ == null) {
                    return request_ == null ? SeldonMessage.getDefaultInstance() : request_;
                } else {
                    return requestBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder setRequest(SeldonMessage value) {
                if (requestBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    request_ = value;
                    onChanged();
                } else {
                    requestBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder setRequest(
                SeldonMessage.Builder builderForValue) {
                if (requestBuilder_ == null) {
                    request_ = builderForValue.build();
                    onChanged();
                } else {
                    requestBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder mergeRequest(SeldonMessage value) {
                if (requestBuilder_ == null) {
                    if (request_ != null) {
                        request_ =
                            SeldonMessage.newBuilder(request_).mergeFrom(value).buildPartial();
                    } else {
                        request_ = value;
                    }
                    onChanged();
                } else {
                    requestBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public Builder clearRequest() {
                if (requestBuilder_ == null) {
                    request_ = null;
                    onChanged();
                } else {
                    request_ = null;
                    requestBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            public SeldonMessage.Builder getRequestBuilder() {

                onChanged();
                return getRequestFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            @Override
            public SeldonMessageOrBuilder getRequestOrBuilder() {
                if (requestBuilder_ != null) {
                    return requestBuilder_.getMessageOrBuilder();
                } else {
                    return request_ == null ?
                        SeldonMessage.getDefaultInstance() : request_;
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage request = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getRequestFieldBuilder() {
                if (requestBuilder_ == null) {
                    requestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        getRequest(),
                        getParentForChildren(),
                        isClean());
                    request_ = null;
                }
                return requestBuilder_;
            }

            private SeldonMessage response_ = null;
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder> responseBuilder_;
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public boolean hasResponse() {
                return responseBuilder_ != null || response_ != null;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public SeldonMessage getResponse() {
                if (responseBuilder_ == null) {
                    return response_ == null ? SeldonMessage.getDefaultInstance() : response_;
                } else {
                    return responseBuilder_.getMessage();
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder setResponse(SeldonMessage value) {
                if (responseBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    response_ = value;
                    onChanged();
                } else {
                    responseBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder setResponse(
                SeldonMessage.Builder builderForValue) {
                if (responseBuilder_ == null) {
                    response_ = builderForValue.build();
                    onChanged();
                } else {
                    responseBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder mergeResponse(SeldonMessage value) {
                if (responseBuilder_ == null) {
                    if (response_ != null) {
                        response_ =
                            SeldonMessage.newBuilder(response_).mergeFrom(value).buildPartial();
                    } else {
                        response_ = value;
                    }
                    onChanged();
                } else {
                    responseBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public Builder clearResponse() {
                if (responseBuilder_ == null) {
                    response_ = null;
                    onChanged();
                } else {
                    response_ = null;
                    responseBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            public SeldonMessage.Builder getResponseBuilder() {

                onChanged();
                return getResponseFieldBuilder().getBuilder();
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            @Override
            public SeldonMessageOrBuilder getResponseOrBuilder() {
                if (responseBuilder_ != null) {
                    return responseBuilder_.getMessageOrBuilder();
                } else {
                    return response_ == null ?
                        SeldonMessage.getDefaultInstance() : response_;
                }
            }
            /**
             * <code>optional .seldon.protos.SeldonMessage response = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>
            getResponseFieldBuilder() {
                if (responseBuilder_ == null) {
                    responseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                        SeldonMessage, SeldonMessage.Builder, SeldonMessageOrBuilder>(
                        getResponse(),
                        getParentForChildren(),
                        isClean());
                    response_ = null;
                }
                return responseBuilder_;
            }
            @Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }

            @Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
                return this;
            }


            // @@protoc_insertion_point(builder_scope:seldon.protos.RequestResponse)
        }

        // @@protoc_insertion_point(class_scope:seldon.protos.RequestResponse)
        private static final RequestResponse DEFAULT_INSTANCE;
        static {
            DEFAULT_INSTANCE = new RequestResponse();
        }

        public static RequestResponse getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<RequestResponse>
            PARSER = new com.google.protobuf.AbstractParser<RequestResponse>() {
            @Override
            public RequestResponse parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
                return new RequestResponse(input, extensionRegistry);
            }
        };

        public static com.google.protobuf.Parser<RequestResponse> parser() {
            return PARSER;
        }

        @Override
        public com.google.protobuf.Parser<RequestResponse> getParserForType() {
            return PARSER;
        }

        @Override
        public RequestResponse getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_SeldonMessage_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_SeldonMessage_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_DefaultData_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_DefaultData_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Tensor_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Tensor_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Meta_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Meta_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Meta_TagsEntry_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Meta_TagsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Meta_RoutingEntry_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Meta_RoutingEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Meta_RequestPathEntry_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Meta_RequestPathEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Metric_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Metric_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Metric_TagsEntry_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Metric_TagsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_SeldonMessageList_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_SeldonMessageList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Status_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Status_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_Feedback_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_Feedback_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
        internal_static_seldon_protos_RequestResponse_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_seldon_protos_RequestResponse_fieldAccessorTable;

    public static com.google.protobuf.Descriptors.FileDescriptor
    getDescriptor() {
        return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
        String[] descriptorData = {
            "\n\020prediction.proto\022\rseldon.protos\032\034googl" +
                "e/protobuf/struct.proto\032&tensorflow/core" +
                "/framework/tensor.proto\"\345\001\n\rSeldonMessag" +
                "e\022%\n\006status\030\001 \001(\0132\025.seldon.protos.Status" +
                "\022!\n\004meta\030\002 \001(\0132\023.seldon.protos.Meta\022*\n\004d" +
                "ata\030\003 \001(\0132\032.seldon.protos.DefaultDataH\000\022" +
                "\021\n\007binData\030\004 \001(\014H\000\022\021\n\007strData\030\005 \001(\tH\000\022*\n" +
                "\010jsonData\030\006 \001(\0132\026.google.protobuf.ValueH" +
                "\000B\014\n\ndata_oneof\"\257\001\n\013DefaultData\022\r\n\005names" +
                "\030\001 \003(\t\022\'\n\006tensor\030\002 \001(\0132\025.seldon.protos.T",
            "ensorH\000\022-\n\007ndarray\030\003 \001(\0132\032.google.protob" +
                "uf.ListValueH\000\022+\n\010tftensor\030\004 \001(\0132\027.tenso" +
                "rflow.TensorProtoH\000B\014\n\ndata_oneof\"/\n\006Ten" +
                "sor\022\021\n\005shape\030\001 \003(\005B\002\020\001\022\022\n\006values\030\002 \003(\001B\002" +
                "\020\001\"\200\003\n\004Meta\022\014\n\004puid\030\001 \001(\t\022+\n\004tags\030\002 \003(\0132" +
                "\035.seldon.protos.Meta.TagsEntry\0221\n\007routin" +
                "g\030\003 \003(\0132 .seldon.protos.Meta.RoutingEntr" +
                "y\0229\n\013requestPath\030\004 \003(\0132$.seldon.protos.M" +
                "eta.RequestPathEntry\022&\n\007metrics\030\005 \003(\0132\025." +
                "seldon.protos.Metric\032C\n\tTagsEntry\022\013\n\003key",
            "\030\001 \001(\t\022%\n\005value\030\002 \001(\0132\026.google.protobuf." +
                "Value:\0028\001\032.\n\014RoutingEntry\022\013\n\003key\030\001 \001(\t\022\r" +
                "\n\005value\030\002 \001(\005:\0028\001\0322\n\020RequestPathEntry\022\013\n" +
                "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\341\001\n\006Metric" +
                "\022\013\n\003key\030\001 \001(\t\022.\n\004type\030\002 \001(\0162 .seldon.pro" +
                "tos.Metric.MetricType\022\r\n\005value\030\003 \001(\002\022-\n\004" +
                "tags\030\004 \003(\0132\037.seldon.protos.Metric.TagsEn" +
                "try\032+\n\tTagsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" +
                " \001(\t:\0028\001\"/\n\nMetricType\022\013\n\007COUNTER\020\000\022\t\n\005G" +
                "AUGE\020\001\022\t\n\005TIMER\020\002\"I\n\021SeldonMessageList\0224",
            "\n\016seldonMessages\030\001 \003(\0132\034.seldon.protos.S" +
                "eldonMessage\"\216\001\n\006Status\022\014\n\004code\030\001 \001(\005\022\014\n" +
                "\004info\030\002 \001(\t\022\016\n\006reason\030\003 \001(\t\0220\n\006status\030\004 " +
                "\001(\0162 .seldon.protos.Status.StatusFlag\"&\n" +
                "\nStatusFlag\022\013\n\007SUCCESS\020\000\022\013\n\007FAILURE\020\001\"\246\001" +
                "\n\010Feedback\022-\n\007request\030\001 \001(\0132\034.seldon.pro" +
                "tos.SeldonMessage\022.\n\010response\030\002 \001(\0132\034.se" +
                "ldon.protos.SeldonMessage\022\016\n\006reward\030\003 \001(" +
                "\002\022+\n\005truth\030\004 \001(\0132\034.seldon.protos.SeldonM" +
                "essage\"p\n\017RequestResponse\022-\n\007request\030\001 \001",
            "(\0132\034.seldon.protos.SeldonMessage\022.\n\010resp" +
                "onse\030\002 \001(\0132\034.seldon.protos.SeldonMessage" +
                "2\211\003\n\007Generic\022N\n\016TransformInput\022\034.seldon." +
                "protos.SeldonMessage\032\034.seldon.protos.Sel" +
                "donMessage\"\000\022O\n\017TransformOutput\022\034.seldon" +
                ".protos.SeldonMessage\032\034.seldon.protos.Se" +
                "ldonMessage\"\000\022E\n\005Route\022\034.seldon.protos.S" +
                "eldonMessage\032\034.seldon.protos.SeldonMessa" +
                "ge\"\000\022M\n\tAggregate\022 .seldon.protos.Seldon" +
                "MessageList\032\034.seldon.protos.SeldonMessag",
            "e\"\000\022G\n\014SendFeedback\022\027.seldon.protos.Feed" +
                "back\032\034.seldon.protos.SeldonMessage\"\0002\231\001\n" +
                "\005Model\022G\n\007Predict\022\034.seldon.protos.Seldon" +
                "Message\032\034.seldon.protos.SeldonMessage\"\000\022" +
                "G\n\014SendFeedback\022\027.seldon.protos.Feedback" +
                "\032\034.seldon.protos.SeldonMessage\"\0002\230\001\n\006Rou" +
                "ter\022E\n\005Route\022\034.seldon.protos.SeldonMessa" +
                "ge\032\034.seldon.protos.SeldonMessage\"\000\022G\n\014Se" +
                "ndFeedback\022\027.seldon.protos.Feedback\032\034.se" +
                "ldon.protos.SeldonMessage\"\0002]\n\013Transform",
            "er\022N\n\016TransformInput\022\034.seldon.protos.Sel" +
                "donMessage\032\034.seldon.protos.SeldonMessage" +
                "\"\0002d\n\021OutputTransformer\022O\n\017TransformOutp" +
                "ut\022\034.seldon.protos.SeldonMessage\032\034.seldo" +
                "n.protos.SeldonMessage\"\0002Y\n\010Combiner\022M\n\t" +
                "Aggregate\022 .seldon.protos.SeldonMessageL" +
                "ist\032\034.seldon.protos.SeldonMessage\"\0002\232\001\n\006" +
                "Seldon\022G\n\007Predict\022\034.seldon.protos.Seldon" +
                "Message\032\034.seldon.protos.SeldonMessage\"\000\022" +
                "G\n\014SendFeedback\022\027.seldon.protos.Feedback",
            "\032\034.seldon.protos.SeldonMessage\"\000B\210\001\n6com" +
                ".bj58.dia.rec.gul.wpai.dlpredictonline.p" +
                "ytorch.grpcB\020PredictionProtosZ<github.co" +
                "m/seldonio/seldon-core/examples/wrappers" +
                "/go/pkg/apib\006proto3"
        };
        com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
            new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
                @Override
                public com.google.protobuf.ExtensionRegistry assignDescriptors(
                    com.google.protobuf.Descriptors.FileDescriptor root) {
                    descriptor = root;
                    return null;
                }
            };
        com.google.protobuf.Descriptors.FileDescriptor
            .internalBuildGeneratedFileFrom(descriptorData,
                new com.google.protobuf.Descriptors.FileDescriptor[] {
                    com.google.protobuf.StructProto.getDescriptor(),
                    org.tensorflow.framework.TensorProtos.getDescriptor(),
                }, assigner);
        internal_static_seldon_protos_SeldonMessage_descriptor =
            getDescriptor().getMessageTypes().get(0);
        internal_static_seldon_protos_SeldonMessage_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_SeldonMessage_descriptor,
            new String[] { "Status", "Meta", "Data", "BinData", "StrData", "JsonData", "DataOneof", });
        internal_static_seldon_protos_DefaultData_descriptor =
            getDescriptor().getMessageTypes().get(1);
        internal_static_seldon_protos_DefaultData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_DefaultData_descriptor,
            new String[] { "Names", "Tensor", "Ndarray", "Tftensor", "DataOneof", });
        internal_static_seldon_protos_Tensor_descriptor =
            getDescriptor().getMessageTypes().get(2);
        internal_static_seldon_protos_Tensor_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Tensor_descriptor,
            new String[] { "Shape", "Values", });
        internal_static_seldon_protos_Meta_descriptor =
            getDescriptor().getMessageTypes().get(3);
        internal_static_seldon_protos_Meta_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Meta_descriptor,
            new String[] { "Puid", "Tags", "Routing", "RequestPath", "Metrics", });
        internal_static_seldon_protos_Meta_TagsEntry_descriptor =
            internal_static_seldon_protos_Meta_descriptor.getNestedTypes().get(0);
        internal_static_seldon_protos_Meta_TagsEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Meta_TagsEntry_descriptor,
            new String[] { "Key", "Value", });
        internal_static_seldon_protos_Meta_RoutingEntry_descriptor =
            internal_static_seldon_protos_Meta_descriptor.getNestedTypes().get(1);
        internal_static_seldon_protos_Meta_RoutingEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Meta_RoutingEntry_descriptor,
            new String[] { "Key", "Value", });
        internal_static_seldon_protos_Meta_RequestPathEntry_descriptor =
            internal_static_seldon_protos_Meta_descriptor.getNestedTypes().get(2);
        internal_static_seldon_protos_Meta_RequestPathEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Meta_RequestPathEntry_descriptor,
            new String[] { "Key", "Value", });
        internal_static_seldon_protos_Metric_descriptor =
            getDescriptor().getMessageTypes().get(4);
        internal_static_seldon_protos_Metric_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Metric_descriptor,
            new String[] { "Key", "Type", "Value", "Tags", });
        internal_static_seldon_protos_Metric_TagsEntry_descriptor =
            internal_static_seldon_protos_Metric_descriptor.getNestedTypes().get(0);
        internal_static_seldon_protos_Metric_TagsEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Metric_TagsEntry_descriptor,
            new String[] { "Key", "Value", });
        internal_static_seldon_protos_SeldonMessageList_descriptor =
            getDescriptor().getMessageTypes().get(5);
        internal_static_seldon_protos_SeldonMessageList_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_SeldonMessageList_descriptor,
            new String[] { "SeldonMessages", });
        internal_static_seldon_protos_Status_descriptor =
            getDescriptor().getMessageTypes().get(6);
        internal_static_seldon_protos_Status_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Status_descriptor,
            new String[] { "Code", "Info", "Reason", "Status", });
        internal_static_seldon_protos_Feedback_descriptor =
            getDescriptor().getMessageTypes().get(7);
        internal_static_seldon_protos_Feedback_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_Feedback_descriptor,
            new String[] { "Request", "Response", "Reward", "Truth", });
        internal_static_seldon_protos_RequestResponse_descriptor =
            getDescriptor().getMessageTypes().get(8);
        internal_static_seldon_protos_RequestResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_seldon_protos_RequestResponse_descriptor,
            new String[] { "Request", "Response", });
        com.google.protobuf.StructProto.getDescriptor();
        org.tensorflow.framework.TensorProtos.getDescriptor();
    }

    // @@protoc_insertion_point(outer_class_scope)
}
